5
5
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
6
6
7
7
import { assertEquals , assertThrows } from "../testing/asserts.ts" ;
8
- import {
9
- NEWLINE ,
10
- parse ,
11
- ParseError ,
12
- stringify ,
13
- StringifyError ,
14
- } from "./csv.ts" ;
8
+ import { parse , ParseError , stringify , StringifyError } from "./csv.ts" ;
9
+
10
+ const CRLF = "\r\n" ;
15
11
16
12
Deno . test ( {
17
13
name : "parse" ,
@@ -864,7 +860,7 @@ Deno.test({
864
860
fn ( ) {
865
861
const columns : string [ ] = [ ] ;
866
862
const data : string [ ] [ ] = [ ] ;
867
- const output = NEWLINE ;
863
+ const output = CRLF ;
868
864
assertEquals ( stringify ( data , { columns } ) , output ) ;
869
865
} ,
870
866
} ,
@@ -887,7 +883,7 @@ Deno.test({
887
883
fn ( ) {
888
884
const columns = [ "a" ] ;
889
885
const data : string [ ] [ ] = [ ] ;
890
- const output = `a${ NEWLINE } ` ;
886
+ const output = `a${ CRLF } ` ;
891
887
assertEquals ( stringify ( data , { columns } ) , output ) ;
892
888
} ,
893
889
} ,
@@ -911,7 +907,7 @@ Deno.test({
911
907
fn ( ) {
912
908
const columns = [ 0 , 1 ] ;
913
909
const data = [ [ "foo" , "bar" ] , [ "baz" , "qux" ] ] ;
914
- const output = `0\r1${ NEWLINE } foo\rbar${ NEWLINE } baz\rqux${ NEWLINE } ` ;
910
+ const output = `0\r1${ CRLF } foo\rbar${ CRLF } baz\rqux${ CRLF } ` ;
915
911
const options = { separator : "\r" , columns } ;
916
912
assertEquals ( stringify ( data , options ) , output ) ;
917
913
} ,
@@ -924,7 +920,7 @@ Deno.test({
924
920
fn ( ) {
925
921
const columns = [ 0 , 1 ] ;
926
922
const data = [ [ "foo" , "bar" ] , [ "baz" , "qux" ] ] ;
927
- const output = `0\n1${ NEWLINE } foo\nbar${ NEWLINE } baz\nqux${ NEWLINE } ` ;
923
+ const output = `0\n1${ CRLF } foo\nbar${ CRLF } baz\nqux${ CRLF } ` ;
928
924
const options = { separator : "\n" , columns } ;
929
925
assertEquals ( stringify ( data , options ) , output ) ;
930
926
} ,
@@ -936,7 +932,7 @@ Deno.test({
936
932
fn ( ) {
937
933
const columns = [ 1 ] ;
938
934
const data = [ { 1 : 1 } , { 1 : 2 } ] ;
939
- const output = `1${ NEWLINE } 1${ NEWLINE } 2${ NEWLINE } ` ;
935
+ const output = `1${ CRLF } 1${ CRLF } 2${ CRLF } ` ;
940
936
assertEquals ( stringify ( data , { columns } ) , output ) ;
941
937
} ,
942
938
} ,
@@ -948,7 +944,7 @@ Deno.test({
948
944
fn ( ) {
949
945
const columns = [ { header : "Value" , prop : "value" } ] ;
950
946
const data = [ { value : "foo" } , { value : "bar" } ] ;
951
- const output = `foo${ NEWLINE } bar${ NEWLINE } ` ;
947
+ const output = `foo${ CRLF } bar${ CRLF } ` ;
952
948
const options = { headers : false , columns } ;
953
949
assertEquals ( stringify ( data , options ) , output ) ;
954
950
} ,
@@ -960,7 +956,7 @@ Deno.test({
960
956
fn ( ) {
961
957
const columns = [ 1 ] ;
962
958
const data = [ [ "key" , "foo" ] , [ "key" , "bar" ] ] ;
963
- const output = `1${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
959
+ const output = `1${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
964
960
assertEquals ( stringify ( data , { columns } ) , output ) ;
965
961
} ,
966
962
} ,
@@ -972,7 +968,7 @@ Deno.test({
972
968
fn ( ) {
973
969
const columns = [ [ 1 ] ] ;
974
970
const data = [ { 1 : 1 } , { 1 : 2 } ] ;
975
- const output = `1${ NEWLINE } 1${ NEWLINE } 2${ NEWLINE } ` ;
971
+ const output = `1${ CRLF } 1${ CRLF } 2${ CRLF } ` ;
976
972
assertEquals ( stringify ( data , { columns } ) , output ) ;
977
973
} ,
978
974
} ,
@@ -983,7 +979,7 @@ Deno.test({
983
979
fn ( ) {
984
980
const columns = [ [ 1 ] ] ;
985
981
const data = [ [ "key" , "foo" ] , [ "key" , "bar" ] ] ;
986
- const output = `1${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
982
+ const output = `1${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
987
983
assertEquals ( stringify ( data , { columns } ) , output ) ;
988
984
} ,
989
985
} ,
@@ -995,7 +991,7 @@ Deno.test({
995
991
fn ( ) {
996
992
const columns = [ [ 1 , 1 ] ] ;
997
993
const data = [ [ "key" , [ "key" , "foo" ] ] , [ "key" , [ "key" , "bar" ] ] ] ;
998
- const output = `1${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
994
+ const output = `1${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
999
995
assertEquals ( stringify ( data , { columns } ) , output ) ;
1000
996
} ,
1001
997
} ,
@@ -1006,7 +1002,7 @@ Deno.test({
1006
1002
fn ( ) {
1007
1003
const columns = [ "value" ] ;
1008
1004
const data = [ { value : "foo" } , { value : "bar" } ] ;
1009
- const output = `value${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
1005
+ const output = `value${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
1010
1006
assertEquals ( stringify ( data , { columns } ) , output ) ;
1011
1007
} ,
1012
1008
} ,
@@ -1017,7 +1013,7 @@ Deno.test({
1017
1013
fn ( ) {
1018
1014
const columns = [ [ "value" ] ] ;
1019
1015
const data = [ { value : "foo" } , { value : "bar" } ] ;
1020
- const output = `value${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
1016
+ const output = `value${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
1021
1017
assertEquals ( stringify ( data , { columns } ) , output ) ;
1022
1018
} ,
1023
1019
} ,
@@ -1028,7 +1024,7 @@ Deno.test({
1028
1024
fn ( ) {
1029
1025
const columns = [ [ "msg" , "value" ] ] ;
1030
1026
const data = [ { msg : { value : "foo" } } , { msg : { value : "bar" } } ] ;
1031
- const output = `value${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
1027
+ const output = `value${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
1032
1028
assertEquals ( stringify ( data , { columns } ) , output ) ;
1033
1029
} ,
1034
1030
} ,
@@ -1044,7 +1040,7 @@ Deno.test({
1044
1040
} ,
1045
1041
] ;
1046
1042
const data = [ { msg : { value : "foo" } } , { msg : { value : "bar" } } ] ;
1047
- const output = `Value${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
1043
+ const output = `Value${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
1048
1044
assertEquals ( stringify ( data , { columns } ) , output ) ;
1049
1045
} ,
1050
1046
} ,
@@ -1057,7 +1053,7 @@ Deno.test({
1057
1053
const columns = [ 0 ] ;
1058
1054
const data = [ [ { value : "foo" } ] , [ { value : "bar" } ] ] ;
1059
1055
const output =
1060
- `0${ NEWLINE } "{""value"":""foo""}"${ NEWLINE } "{""value"":""bar""}"${ NEWLINE } ` ;
1056
+ `0${ CRLF } "{""value"":""foo""}"${ CRLF } "{""value"":""bar""}"${ CRLF } ` ;
1061
1057
assertEquals ( stringify ( data , { columns } ) , output ) ;
1062
1058
} ,
1063
1059
} ,
@@ -1072,7 +1068,7 @@ Deno.test({
1072
1068
[ [ { value : "baz" } , { value : "qux" } ] ] ,
1073
1069
] ;
1074
1070
const output =
1075
- `0${ NEWLINE } "[{""value"":""foo""},{""value"":""bar""}]"${ NEWLINE } "[{""value"":""baz""},{""value"":""qux""}]"${ NEWLINE } ` ;
1071
+ `0${ CRLF } "[{""value"":""foo""},{""value"":""bar""}]"${ CRLF } "[{""value"":""baz""},{""value"":""qux""}]"${ CRLF } ` ;
1076
1072
assertEquals ( stringify ( data , { columns } ) , output ) ;
1077
1073
} ,
1078
1074
} ,
@@ -1084,7 +1080,7 @@ Deno.test({
1084
1080
const columns = [ 0 ] ;
1085
1081
const data = [ [ [ "foo" , "bar" ] ] , [ [ "baz" , "qux" ] ] ] ;
1086
1082
const output =
1087
- `0${ NEWLINE } "[""foo"",""bar""]"${ NEWLINE } "[""baz"",""qux""]"${ NEWLINE } ` ;
1083
+ `0${ CRLF } "[""foo"",""bar""]"${ CRLF } "[""baz"",""qux""]"${ CRLF } ` ;
1088
1084
assertEquals ( stringify ( data , { columns } ) , output ) ;
1089
1085
} ,
1090
1086
} ,
@@ -1097,7 +1093,7 @@ Deno.test({
1097
1093
const columns = [ 0 ] ;
1098
1094
const data = [ [ [ "foo" , "bar" ] ] , [ [ "baz" , "qux" ] ] ] ;
1099
1095
const output =
1100
- `0${ NEWLINE } "[""foo"",""bar""]"${ NEWLINE } "[""baz"",""qux""]"${ NEWLINE } ` ;
1096
+ `0${ CRLF } "[""foo"",""bar""]"${ CRLF } "[""baz"",""qux""]"${ CRLF } ` ;
1101
1097
const options = { separator : "\t" , columns } ;
1102
1098
assertEquals ( stringify ( data , options ) , output ) ;
1103
1099
} ,
@@ -1109,7 +1105,7 @@ Deno.test({
1109
1105
fn ( ) {
1110
1106
const columns = [ 0 ] ;
1111
1107
const data = [ [ ] , [ ] ] ;
1112
- const output = `0${ NEWLINE } ${ NEWLINE } ${ NEWLINE } ` ;
1108
+ const output = `0${ CRLF } ${ CRLF } ${ CRLF } ` ;
1113
1109
assertEquals ( stringify ( data , { columns } ) , output ) ;
1114
1110
} ,
1115
1111
} ,
@@ -1120,7 +1116,7 @@ Deno.test({
1120
1116
fn ( ) {
1121
1117
const columns = [ 0 ] ;
1122
1118
const data = [ [ null ] , [ null ] ] ;
1123
- const output = `0${ NEWLINE } ${ NEWLINE } ${ NEWLINE } ` ;
1119
+ const output = `0${ CRLF } ${ CRLF } ${ CRLF } ` ;
1124
1120
assertEquals ( stringify ( data , { columns } ) , output ) ;
1125
1121
} ,
1126
1122
} ,
@@ -1131,7 +1127,7 @@ Deno.test({
1131
1127
fn ( ) {
1132
1128
const columns = [ 0 ] ;
1133
1129
const data = [ [ 0xa ] , [ 0xb ] ] ;
1134
- const output = `0${ NEWLINE } 10${ NEWLINE } 11${ NEWLINE } ` ;
1130
+ const output = `0${ CRLF } 10${ CRLF } 11${ CRLF } ` ;
1135
1131
assertEquals ( stringify ( data , { columns } ) , output ) ;
1136
1132
} ,
1137
1133
} ,
@@ -1142,7 +1138,7 @@ Deno.test({
1142
1138
fn ( ) {
1143
1139
const columns = [ 0 ] ;
1144
1140
const data = [ [ BigInt ( "1" ) ] , [ BigInt ( "2" ) ] ] ;
1145
- const output = `0${ NEWLINE } 1${ NEWLINE } 2${ NEWLINE } ` ;
1141
+ const output = `0${ CRLF } 1${ CRLF } 2${ CRLF } ` ;
1146
1142
assertEquals ( stringify ( data , { columns } ) , output ) ;
1147
1143
} ,
1148
1144
} ,
@@ -1153,7 +1149,7 @@ Deno.test({
1153
1149
fn ( ) {
1154
1150
const columns = [ 0 ] ;
1155
1151
const data = [ [ true ] , [ false ] ] ;
1156
- const output = `0${ NEWLINE } true${ NEWLINE } false${ NEWLINE } ` ;
1152
+ const output = `0${ CRLF } true${ CRLF } false${ CRLF } ` ;
1157
1153
assertEquals ( stringify ( data , { columns } ) , output ) ;
1158
1154
} ,
1159
1155
} ,
@@ -1164,7 +1160,7 @@ Deno.test({
1164
1160
fn ( ) {
1165
1161
const columns = [ 0 ] ;
1166
1162
const data = [ [ "foo" ] , [ "bar" ] ] ;
1167
- const output = `0${ NEWLINE } foo${ NEWLINE } bar${ NEWLINE } ` ;
1163
+ const output = `0${ CRLF } foo${ CRLF } bar${ CRLF } ` ;
1168
1164
assertEquals ( stringify ( data , { columns } ) , output ) ;
1169
1165
} ,
1170
1166
} ,
@@ -1175,8 +1171,7 @@ Deno.test({
1175
1171
fn ( ) {
1176
1172
const columns = [ 0 ] ;
1177
1173
const data = [ [ Symbol ( "foo" ) ] , [ Symbol ( "bar" ) ] ] ;
1178
- const output =
1179
- `0${ NEWLINE } Symbol(foo)${ NEWLINE } Symbol(bar)${ NEWLINE } ` ;
1174
+ const output = `0${ CRLF } Symbol(foo)${ CRLF } Symbol(bar)${ CRLF } ` ;
1180
1175
assertEquals ( stringify ( data , { columns } ) , output ) ;
1181
1176
} ,
1182
1177
} ,
@@ -1187,7 +1182,7 @@ Deno.test({
1187
1182
fn ( ) {
1188
1183
const columns = [ 0 ] ;
1189
1184
const data = [ [ ( n : number ) => n ] ] ;
1190
- const output = `0${ NEWLINE } (n)=>n${ NEWLINE } ` ;
1185
+ const output = `0${ CRLF } (n)=>n${ CRLF } ` ;
1191
1186
assertEquals ( stringify ( data , { columns } ) , output ) ;
1192
1187
} ,
1193
1188
} ,
@@ -1198,7 +1193,7 @@ Deno.test({
1198
1193
fn ( ) {
1199
1194
const columns = [ 0 ] ;
1200
1195
const data = [ [ 'foo"' ] ] ;
1201
- const output = `0${ NEWLINE } "foo"""${ NEWLINE } ` ;
1196
+ const output = `0${ CRLF } "foo"""${ CRLF } ` ;
1202
1197
assertEquals ( stringify ( data , { columns } ) , output ) ;
1203
1198
} ,
1204
1199
} ,
@@ -1209,7 +1204,7 @@ Deno.test({
1209
1204
fn ( ) {
1210
1205
const columns = [ 0 ] ;
1211
1206
const data = [ [ "foo\r\n" ] ] ;
1212
- const output = `0${ NEWLINE } "foo\r\n"${ NEWLINE } ` ;
1207
+ const output = `0${ CRLF } "foo\r\n"${ CRLF } ` ;
1213
1208
assertEquals ( stringify ( data , { columns } ) , output ) ;
1214
1209
} ,
1215
1210
} ,
@@ -1220,7 +1215,7 @@ Deno.test({
1220
1215
fn ( ) {
1221
1216
const columns = [ 0 ] ;
1222
1217
const data = [ [ "foo\r" ] ] ;
1223
- const output = `0${ NEWLINE } foo\r${ NEWLINE } ` ;
1218
+ const output = `0${ CRLF } foo\r${ CRLF } ` ;
1224
1219
assertEquals ( stringify ( data , { columns } ) , output ) ;
1225
1220
} ,
1226
1221
} ,
@@ -1231,7 +1226,7 @@ Deno.test({
1231
1226
fn ( ) {
1232
1227
const columns = [ 0 ] ;
1233
1228
const data = [ [ "foo\n" ] ] ;
1234
- const output = `0${ NEWLINE } foo\n${ NEWLINE } ` ;
1229
+ const output = `0${ CRLF } " foo\n" ${ CRLF } ` ;
1235
1230
assertEquals ( stringify ( data , { columns } ) , output ) ;
1236
1231
} ,
1237
1232
} ,
@@ -1242,7 +1237,7 @@ Deno.test({
1242
1237
fn ( ) {
1243
1238
const columns = [ 0 ] ;
1244
1239
const data = [ [ "foo," ] ] ;
1245
- const output = `0${ NEWLINE } "foo,"${ NEWLINE } ` ;
1240
+ const output = `0${ CRLF } "foo,"${ CRLF } ` ;
1246
1241
assertEquals ( stringify ( data , { columns } ) , output ) ;
1247
1242
} ,
1248
1243
} ,
@@ -1253,7 +1248,7 @@ Deno.test({
1253
1248
fn ( ) {
1254
1249
const columns = [ 0 ] ;
1255
1250
const data = [ [ "foo," ] ] ;
1256
- const output = `0${ NEWLINE } foo,${ NEWLINE } ` ;
1251
+ const output = `0${ CRLF } foo,${ CRLF } ` ;
1257
1252
1258
1253
const options = { separator : "\t" , columns } ;
1259
1254
assertEquals ( stringify ( data , options ) , output ) ;
@@ -1264,7 +1259,7 @@ Deno.test({
1264
1259
name : "Valid data, no columns" ,
1265
1260
async fn ( ) {
1266
1261
const data = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] ;
1267
- const output = `${ NEWLINE } 1,2,3${ NEWLINE } 4,5,6${ NEWLINE } ` ;
1262
+ const output = `${ CRLF } 1,2,3${ CRLF } 4,5,6${ CRLF } ` ;
1268
1263
1269
1264
assertEquals ( await stringify ( data ) , output ) ;
1270
1265
} ,
0 commit comments