summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-01-24 20:49:52 -0800
committerKaz Kylheku <kaz@kylheku.com>2025-01-24 20:49:52 -0800
commit31540ce793f1aa551e1df3054f37fb3221618361 (patch)
treececace480fad4edf6c08e8028bf8043c61103ed9 /tests
parentaf458b10e3bc6709e68ef7d0ca1d2aabbeada414 (diff)
downloadtxr-31540ce793f1aa551e1df3054f37fb3221618361.tar.gz
txr-31540ce793f1aa551e1df3054f37fb3221618361.tar.bz2
txr-31540ce793f1aa551e1df3054f37fb3221618361.zip
New functions for producing CSV.
* stream.c (put_csv, tocsv): New functions. (stream_init): put-csv and tocsv intrinsics registered. * stream.h (put_csv, tocsv): Declared. * tests/010/csv.tl (mtest-pcsv): New macro. New test cases. * txr.1: Documented.
Diffstat (limited to 'tests')
-rw-r--r--tests/010/csv.tl19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/010/csv.tl b/tests/010/csv.tl
index fffd8d0d..6c93b6c8 100644
--- a/tests/010/csv.tl
+++ b/tests/010/csv.tl
@@ -6,6 +6,12 @@
,(mapcar (op regsub "#" "\"") @2)))
data expected))))
+(defmacro mtest-pcsv (. pairs)
+ (tree-bind (data expected) (flow pairs (tuples 2) transpose)
+ ^(mtest ,*(mappend (ret ^((tocsv ,(mapcar [iffi stringp (op regsub "#" "\"")] @1))
+ ,(regsub "#" "\"" @2)))
+ data expected))))
+
(mtest-csv
"" #("")
"," #("" "")
@@ -164,3 +170,16 @@
"#Hello, ##Bob##!#\r\n" #("Hello, #Bob#!")
"#Hello, ##Bob##!#\n" #("Hello, #Bob#!")
"#Hello, ##Bob##!#\r" #("Hello, #Bob#!\r"))
+
+(mtest-pcsv
+ #() "\n"
+ #("") "\n"
+ #(hello) "hello\n"
+ #(3.14) "3.14\n"
+ #(1.0 2 #\c) "1,2,c\n"
+ #(hello world) "hello,world\n"
+ #("foo" "bar") "foo,bar\n"
+ #(",") "#,#\n"
+ #("a\nb" "c#d" "e,f") "#a\nb#,#c##d#,#e,f#\n"
+ #("a\n#,b") "#a\n##,b#\n"
+ #("a#\n,b\n") "#a##\n,b\n#\n")