From 5cdffd912600e9f6bf588cdf4411352c6db9d0f3 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Sat, 28 Mar 2026 20:50:08 -0500 Subject: [PATCH] Add vCard 4 ORG structured-property tests --- tests/tvcard4.nim | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/tvcard4.nim b/tests/tvcard4.nim index 4b80ae4..1fb8f6f 100644 --- a/tests/tvcard4.nim +++ b/tests/tvcard4.nim @@ -185,6 +185,32 @@ suite "vcard/vcard4": serialize(adr) == r"ADR:Box\, 7;Suite\; 9;123 Main St;Montreal\nWest;QC\\CA;H2Y 1C6;Canada" + test "spec: ORG supports multiple organization units": + check compiles(newVC4_Org( + value = @["ABC, Inc.", "North American Division", "Marketing"])) + + when compiles(newVC4_Org( + value = @["ABC, Inc.", "North American Division", "Marketing"])): + let org = newVC4_Org( + value = @["ABC, Inc.", "North American Division", "Marketing"]) + check serialize(org) == "ORG:ABC\\, Inc.;North American Division;Marketing" + + let parsed = parseSingleVCard4(vcard4Doc( + "VERSION:4.0", + "FN:John Smith", + "ORG:ABC\\, Inc.;North American Division;Marketing")) + check: + parsed.org.len == 1 + parsed.org[0].value == @["ABC, Inc.", "North American Division", "Marketing"] + serialize(parsed.org[0]) == "ORG:ABC\\, Inc.;North American Division;Marketing" + + test "spec: ORG round-trips structured input without escaping separators": + let parsed = parseSingleVCard4(vcard4Doc( + "VERSION:4.0", + "FN:John Smith", + "ORG:ABC\\, Inc.;North American Division;Marketing")) + check serialize(parsed.org[0]) == "ORG:ABC\\, Inc.;North American Division;Marketing" + test "can parse properties with escaped characters": check v4Ex.note.len == 1 let note = v4Ex.note[0]