From 34a9c8e0833bc3379fe646f5af975dc484743bea Mon Sep 17 00:00:00 2001 From: Rangi42 Date: Mon, 27 Jan 2025 23:44:52 -0500 Subject: [PATCH] Add some more string test cases --- test/asm/invalid-format.asm | 1 + test/asm/invalid-format.err | 4 +++- test/asm/invalid-format.out | 1 + test/asm/invalid-utf-8-strings.asm | 14 ++++++++++++++ test/asm/invalid-utf-8-strings.err | 10 +++++++++- test/asm/invalid-utf-8-strings.out | 1 + test/asm/string-formatting.asm | 2 ++ test/asm/string-formatting.out | 1 + 8 files changed, 32 insertions(+), 2 deletions(-) diff --git a/test/asm/invalid-format.asm b/test/asm/invalid-format.asm index 6477ea4e..98f31c34 100644 --- a/test/asm/invalid-format.asm +++ b/test/asm/invalid-format.asm @@ -15,3 +15,4 @@ println STRFMT("%q16s", "hello") println STRFMT("%#d", 42) println STRFMT("%.5d", 42) +println STRFMT("%q5d", 42) diff --git a/test/asm/invalid-format.err b/test/asm/invalid-format.err index 5e7c3fcc..d113009d 100644 --- a/test/asm/invalid-format.err +++ b/test/asm/invalid-format.err @@ -26,4 +26,6 @@ error: invalid-format.asm(16): Formatting type 'd' with exact flag '#' error: invalid-format.asm(17): Formatting type 'd' with fractional width -error: Assembly aborted (14 errors)! +error: invalid-format.asm(18): + Formatting type 'd' with fractional precision +error: Assembly aborted (15 errors)! diff --git a/test/asm/invalid-format.out b/test/asm/invalid-format.out index db1830ee..8ab38603 100644 --- a/test/asm/invalid-format.out +++ b/test/asm/invalid-format.out @@ -11,3 +11,4 @@ hello hello 42 42 +42 diff --git a/test/asm/invalid-utf-8-strings.asm b/test/asm/invalid-utf-8-strings.asm index b43bda8e..f105e6e3 100644 --- a/test/asm/invalid-utf-8-strings.asm +++ b/test/asm/invalid-utf-8-strings.asm @@ -21,3 +21,17 @@ println "\"{invalid}\" == \"{copy}\" ({d:n})" DEF mid1 EQUS STRSUB("{invalid}", 5, 2) DEF mid2 EQUS STRSUB("{invalid}", 9, 1) println "\"{mid2}{mid1}\"" + +; characters: +; 1: U+0041 A +; 2: U+0020 space +; 3: invalid byte 0xFE +; 4: invalid byte 0x81 +; 5: invalid byte 0xFF +; 6: U+0020 space +; 7: U+0042 B +REDEF invalid EQUS "A ž’ B" + +DEF n = strlen("{invalid}") +DEF r = charlen("{invalid}") +println "\"{#s:invalid}\": {d:n} != {d:r}" diff --git a/test/asm/invalid-utf-8-strings.err b/test/asm/invalid-utf-8-strings.err index 6d9cdee9..dfcb1a29 100644 --- a/test/asm/invalid-utf-8-strings.err +++ b/test/asm/invalid-utf-8-strings.err @@ -42,4 +42,12 @@ error: invalid-utf-8-strings.asm(22): STRSUB: Invalid UTF-8 byte 0xA3 error: invalid-utf-8-strings.asm(22): STRSUB: Invalid UTF-8 byte 0xA4 -error: Assembly aborted (22 errors)! +error: invalid-utf-8-strings.asm(35): + STRLEN: Invalid UTF-8 byte 0xFE +error: invalid-utf-8-strings.asm(35): + STRLEN: Invalid UTF-8 byte 0x81 +error: invalid-utf-8-strings.asm(35): + STRLEN: Invalid UTF-8 byte 0xFF +error: invalid-utf-8-strings.asm(36): + Input string is not valid UTF-8 +error: Assembly aborted (26 errors)! diff --git a/test/asm/invalid-utf-8-strings.out b/test/asm/invalid-utf-8-strings.out index 21af52fb..e24c370d 100644 --- a/test/asm/invalid-utf-8-strings.out +++ b/test/asm/invalid-utf-8-strings.out @@ -1,2 +1,3 @@ "aƤbę¼¢,a£¤bęš¢!" == "aƤbę¼¢,a£¤bęš¢!" (12) "b,a" +"A ž’ B": 7 != 2 diff --git a/test/asm/string-formatting.asm b/test/asm/string-formatting.asm index fc892b49..cc009ade 100644 --- a/test/asm/string-formatting.asm +++ b/test/asm/string-formatting.asm @@ -4,11 +4,13 @@ def f equ -123.0456 def pi equ 3.14159 def s equs "hello" def t equs "\"\\t\" is '\t'" +def u equs "\t\r\0\n" println "<{ -6d:n}> <{+06u:n}> <{5x:n}> <{#16b:n}>" println "<{u:m}> <{+3d:m}> <{#016o:m}>" println "<{f:pi}> <{06.f:f}> <{.10f:f}>" println "\"{#-20s:t}\", \"{#20s:t}\", \"{20s:t}\"" + println "{#s:u}" macro foo println "\1 <{\1}>" diff --git a/test/asm/string-formatting.out b/test/asm/string-formatting.out index d6f26ae1..f000a17c 100644 --- a/test/asm/string-formatting.out +++ b/test/asm/string-formatting.out @@ -2,4 +2,5 @@ <4294967254> <-42> <&000037777777726> <3.14159> <-00123> <-123.0455932617> "\"\\t\" is '\t' ", " \"\\t\" is '\t'", " "\t" is ' '" +\t\r\0\n -6d:n <300 >