source: project/release/5/string-utils/trunk/tests/string-utils-test.scm @ 39956

Last change on this file since 39956 was 39956, checked in by Kon Lovett, 2 months ago

remove unused declarations

File size: 4.6 KB
Line 
1;;;; string-utils-test.scm  -*- Scheme -*-
2;;;; Kon Lovett, Jul '18
3;;;; Kon Lovett, Oct '17
4
5(import scheme utf8)
6
7(import test)
8
9(test-begin "String Utils")
10
11;;;
12
13(import unicode-utils to-hex string-hexadecimal)
14
15(test-group "Unicode"
16  (test-assert (ascii-codepoint? #\a))
17  (test "abc" (unicode-string #\a #\b #\c))
18  (test "cebb" (string->hex (char->unicode-string #\u03BB)))
19  (test "cebbcebbcebb" (string->hex (unicode-string #\u03BB #\u03BB #\u03BB)))
20  (test "cebbcebb" (string->hex (unicode-make-string 2 #\u03BB)))
21)
22
23(import memoized-string)
24
25(test-group "Memoized"
26  (test "a" (make-string+ 1 #\a))
27  (define a5 (make-string+ 5 #\a))
28  (test "aaaaa" a5)
29  (define spc5 (make-string+ 5))
30  (test "     " spc5)
31  (test-assert (eq? a5 (make-string+ 5 #\a)))
32  (test-assert (eq? spc5 (make-string+ 5 #\space)))
33  (define tststr1 (string+ #\我 #\䜠))
34  (test "(string+ #\\我 #\\䜠)" tststr1 "我䜠")
35  (test-assert (eq? tststr1 (string+ #\我 #\䜠)))
36  (define tststr2 "䞊海的䞜西埈䟿宜")
37  (test-assert (eq? tststr2 (global-string tststr2)))
38)
39
40(import string-hexadecimal (chicken blob) (srfi 4))
41
42(test-group "To Hex"
43        (let ((t (make-string (* 2 3))))
44                (blob_to_hex t (string->blob "12abc34") 2 5)
45                (test "616263" t) )
46  ;
47        (let ((t (make-string (* 2 3))))
48                (u8vec_to_hex t (u8vector 1 2 #x61 #x62 #x63 3 4) 2 5)
49                (test "616263" t) )
50  ;
51        (let ((t (make-string (* 2 2))))
52                (s8vec_to_hex t (s8vector 1 2 -45 -54 3 4) 2 4)
53                (test "d3ca" t) )
54)
55
56(test-group "String -> Hex"
57        (test "616263" (string->hex "12abc34" 2 5))
58        (test "414243444546" (string->hex "ABCDEF"))
59        (test "4243444546" (string->hex "ABCDEF" 1))
60        (test "4243" (string->hex "ABCDEF" 1 3))
61)
62
63(test-group "Hex -> String"
64        (test "abc" (hex->string "616263"))
65        (test "ABCDEF" (hex->string "414243444546"))
66        (test "BCDEF" (hex->string "4243444546"))
67        (test "BC" (hex->string "4243"))
68        (test "jkL]" (hex->string "6a6B4c5D"))
69        (test-error (hex->string "424"))
70)
71
72;;
73
74(import string-interpolation)
75
76(test-group "String Interpolation"
77  (let ((res '(##sys#print-to-string (list "foo " (+ 1 2) " bar"))))
78    (test res (string-interpolate "foo #(+ 1 2) bar"))
79    (test res (string-interpolate "foo #(+ 1 2) bar"))
80    (test res (string-interpolate "foo ${(+ 1 2)} bar" eval-tag: #\$))
81    (test res (string-interpolate "foo $(+ 1 2) bar" eval-tag: #\$)) )
82)
83
84(import (prefix utf8-string-interpolation utf8::))
85
86(test-group "String Interpolation (UTF-8)"
87  (let ((res '(##sys#print-to-string (list "听诎䞊海的 " (+ 1 2) " 䞜西埈莵"))))
88    (test res (utf8::string-interpolate "听诎䞊海的 #(+ 1 2) 䞜西埈莵"))
89    (test res (utf8::string-interpolate "听诎䞊海的 #(+ 1 2) 䞜西埈莵"))
90    (test res (utf8::string-interpolate "听诎䞊海的 ${(+ 1 2)} 䞜西埈莵" eval-tag: #\$))
91    (test res (utf8::string-interpolate "听诎䞊海的 $(+ 1 2) 䞜西埈莵" eval-tag: #\$)) )
92)
93
94(import string-interpolation-syntax (chicken port))
95
96;must be "top level"; cannot be test-group
97(test-begin "String Interpolation Syntax")
98  (set-sharp-string-interpolation-syntax string-interpolate)
99  (test
100    '((##sys#print-to-string (list "foo " (+ 1 2) " bar")))
101    (list (call-with-input-string "#\"foo #{(+ 1 2)} bar\"" read)))
102  (set-sharp-string-interpolation-syntax #f)
103
104  (set-sharp-string-interpolation-syntax
105    (cute string-interpolate <> eval-tag: #\$))
106  (test
107    '((##sys#print-to-string (list "foo " (+ 1 2) " bar")))
108    (list (call-with-input-string "#\"foo ${(+ 1 2)} bar\"" read)))
109  (set-sharp-string-interpolation-syntax #f)
110(test-end "String Interpolation Syntax")
111
112;;
113
114(import string-utils)
115
116(test-group "string-utils"
117
118  (test "foo" (string-fixed-length "abcde" 1 #:trailing "foo"))
119  (test "a..." (string-fixed-length "abcde" 4))
120  (test "abc " (string-fixed-length "abc" 4))
121  (test "👀..." (string-fixed-length "👀👩👚📷📺" 4))
122  (test "👀👩🎑🎍" (string-fixed-length "👀👩👚📷📺" 4 #:trailing "🎑🎍"))
123  #; ;FIXME char is not 24-bit
124  (test "👀👩👚📷📺🎋" (string-fixed-length "👀👩👚📷📺" 6 #:pad-char #\U0001F38B))
125
126  (test "foo" (string-trim-whitespace-both "  foo \t \n  \r "))
127  (test "(a b)" (list-as-string '(a b)))
128  (test "...27" (number->padded-string 23 5 #\. 8))
129
130  (test "foobar" (string-longest-prefix "foobarbaz" '("foobaz" "foobar" "barbaz" "barfoo" "bazfoo")))
131  (test "barbaz" (string-longest-suffix "foobarbaz" '("foobaz" "foobar" "barbaz" "barfoo" "bazfoo")))
132
133  (test "fooba" (string-longest-common-prefix '("foobaz" "foobar")))
134  (test "foo" (string-longest-common-suffix '("bazfoo" "barfoo")))
135
136  (test "a.b,c" (apply string-zip (receive (string-unzip "a.b,c" ",."))))
137)
138
139;;;
140
141(test-end "String Utils")
142
143(test-exit)
Note: See TracBrowser for help on using the repository browser.