diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2025-01-21 07:24:17 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2025-01-21 07:24:17 -0800 |
commit | 6824735d879f42572778b40c323828f533b87248 (patch) | |
tree | b135841d76b1854936138e348355ae8f93001ee1 /tests | |
parent | 519b05f5281572ef9f6f686844af25159ca5896e (diff) | |
download | txr-6824735d879f42572778b40c323828f533b87248.tar.gz txr-6824735d879f42572778b40c323828f533b87248.tar.bz2 txr-6824735d879f42572778b40c323828f533b87248.zip |
New function: get-csv.
* autloload.c (csv_set_entries, csv_instantiate): New
static funtions.
(autoload_init): Register autoload of stdlib/csv
module via new functions.
* stdlib/csv.tl: New file.
* tests/010/csv.tl: Likewise.
* txr.1: Documented.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/010/csv.tl | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/tests/010/csv.tl b/tests/010/csv.tl new file mode 100644 index 00000000..fffd8d0d --- /dev/null +++ b/tests/010/csv.tl @@ -0,0 +1,166 @@ +(load "../common") + +(defmacro mtest-csv (. pairs) + (tree-bind (data expected) (flow pairs (tuples 2) transpose) + ^(mtest ,*(mappend (ret ^((get-csv ,(regsub "#" "\"" @1)) + ,(mapcar (op regsub "#" "\"") @2))) + data expected)))) + +(mtest-csv + "" #("") + "," #("" "") + ",," #("" "" "")) + +(mtest-csv + "\r" #("\r") + "\r\n" #("") + "\r\r" #("\r\r") + "\r\r\n" #("\r") + "\r\r" #("\r\r") + "\r\r\r" #("\r\r\r") + "\r\r\r\n" #("\r\r") + "\r,\r" #("\r" "\r") + "\r\n,\r" #("") + "\r\r\n,\r" #("\r") + ",\r\r" #("" "\r\r") + ",\r\n" #("" "")) + +(mtest-csv + "a\r" #("a\r") + "a\r\n" #("a") + "a\r\r" #("a\r\r") + "a\r\r\n" #("a\r") + "a\r\r" #("a\r\r") + "a\r\r\r" #("a\r\r\r") + "a\r\r\r\n" #("a\r\r") + "a\r,a\r" #("a\r" "a\r") + "a\r\n,a\r" #("a") + "a\r\r\n,a\r" #("a\r") + "a,a\r\r" #("a" "a\r\r") + "a,\r\r" #("a" "\r\r") + ",a\r\n" #("" "a")) + +(mtest-csv + "##" #("") + "#" #("") + "#,#" #(",") + "##,##" #("" "") + "####" #("#") + "##a#" #("a#") + "#\r#" #("\r") + "#\n#" #("\n") + "#\r\n#" #("\n") + "#\r\r\n#" #("\r\n") + "#\r\r\r\n#" #("\r\r\n") + "##\r\n#" #("") + "##\r\r\n#" #("\r") + "##\r\r\r\n#" #("\r\r")) + +(mtest-csv + "##\n" #("") + "#\n" #("\n") + "#,#\n" #(",") + "##,##\n" #("" "") + "####\n" #("#") + "##a#\n" #("a#") + "#\r#\n" #("\r") + "#\n#\n" #("\n") + "#\r\n#\n" #("\n") + "#\r\r\n#\n" #("\r\n") + "#\r\r\r\n#\n" #("\r\r\n") + "##\r\n#\n" #("") + "##\r\r\n#\n" #("\r") + "##\r\r\r\n#\n" #("\r\r")) + +(mtest-csv + "#\r##\r#" #("\r#\r") + "#\n##\n#" #("\n#\n") + "#\r\n##\r\n#" #("\n#\n")) + +(mtest-csv + "a#b" #("a#b") + "a##b" #("a##b") + "a###b" #("a###b")) + +(mtest-csv + "#a#b" #("ab") + "ab#cd#ef" #("ab#cd#ef")) + +(mtest-csv + "a," #("a" "") + ",a" #("" "a") + "a,b,c" #("a" "b" "c") + "#a#,b,c" #("a" "b" "c") + "a,#b#,c" #("a" "b" "c") + "a,b,#c#" #("a" "b" "c") + "#a#,b,#c#" #("a" "b" "c") + "#a#,#b#,#c#" #("a" "b" "c")) + +(mtest-csv + "a,\r\n" #("a" "") + ",a\r\n" #("" "a") + "a,b,c\r\n" #("a" "b" "c") + "#a#,b,c\r\n" #("a" "b" "c") + "a,#b#,c\r\n" #("a" "b" "c") + "a,b,#c#\r\n" #("a" "b" "c") + "#a#,b,#c#\r\n" #("a" "b" "c") + "#a#,#b#,#c#\r\n" #("a" "b" "c")) + +(mtest-csv + "a,\n" #("a" "") + ",a\n" #("" "a") + "a,b,c\n" #("a" "b" "c") + "#a#,b,c\n" #("a" "b" "c") + "a,#b#,c\n" #("a" "b" "c") + "a,b,#c#\n" #("a" "b" "c") + "#a#,b,#c#\n" #("a" "b" "c") + "#a#,#b#,#c#\n" #("a" "b" "c")) + +(mtest-csv + "a,\r" #("a" "\r") + ",a\r" #("" "a\r") + "a,b,c\r" #("a" "b" "c\r") + "#a#,b,c\r" #("a" "b" "c\r") + "a,#b#,c\r" #("a" "b" "c\r") + "a,b,#c#\r" #("a" "b" "c\r") + "#a#,b,#c#\r" #("a" "b" "c\r") + "#a#,#b#,#c#\r" #("a" "b" "c\r")) + +(mtest-csv + "a,\n" #("a" "") + ",a\n" #("" "a") + "a,b,c\n" #("a" "b" "c") + "#a#,b,c\n" #("a" "b" "c") + "a,#b#,c\n" #("a" "b" "c") + "a,b,#c#\n" #("a" "b" "c") + "#a#,b,#c#\n" #("a" "b" "c") + "#a#,#b#,#c#\n" #("a" "b" "c")) + +(mtest-csv + "a,\r" #("a" "\r") + ",a\r" #("" "a\r") + "a,b,c\r" #("a" "b" "c\r") + "#a#,b,c\r" #("a" "b" "c\r") + "a,#b#,c\r" #("a" "b" "c\r") + "a,b,#c#\r" #("a" "b" "c\r") + "#a#,b,#c#\r" #("a" "b" "c\r") + "#a#,#b#,#c#\r" #("a" "b" "c\r")) + +(mtest-csv + "aa,\r\n" #("aa" "") + ",aa\r\n" #("" "aa") + "aa,bb,cc\r\n" #("aa" "bb" "cc") + "#aa#,bb,cc\r\n" #("aa" "bb" "cc") + "aa,#bb#,cc\r\n" #("aa" "bb" "cc") + "aa,bb,#cc#\r\n" #("aa" "bb" "cc") + "#aa#,bb,#cc#\r\n" #("aa" "bb" "cc") + "#aa#,#bb#,#cc#\r\n" #("aa" "bb" "cc")) + +(mtest-csv + "#Hello, ##Bob##!" #("Hello, #Bob#!") + "#Hello, ##Bob##!\r" #("Hello, #Bob#!\r") + "#Hello, ##Bob##!\n" #("Hello, #Bob#!\n") + "#Hello, ##Bob##!\r\n" #("Hello, #Bob#!\n") + "#Hello, ##Bob##!#\r\n" #("Hello, #Bob#!") + "#Hello, ##Bob##!#\n" #("Hello, #Bob#!") + "#Hello, ##Bob##!#\r" #("Hello, #Bob#!\r")) |