|
1 require("../env"); |
|
2 require("../../d3"); |
|
3 require("../../d3.csv"); |
|
4 |
|
5 var vows = require("vows"), |
|
6 assert = require("assert"); |
|
7 |
|
8 var suite = vows.describe("d3.csv.parse"); |
|
9 |
|
10 suite.addBatch({ |
|
11 "parse": { |
|
12 topic: function() { |
|
13 return d3.csv.parse; |
|
14 }, |
|
15 "returns an array of objects": function(parse) { |
|
16 assert.deepEqual(parse("a,b,c\n1,2,3\n"), [{a: "1", b: "2", c: "3"}]); |
|
17 }, |
|
18 "does not strip whitespace": function(parse) { |
|
19 assert.deepEqual(parse("a,b,c\n 1, 2,3\n"), [{a: " 1", b: " 2", c: "3"}]); |
|
20 }, |
|
21 "parses quoted values": function(parse) { |
|
22 assert.deepEqual(parse("a,b,c\n\"1\",2,3"), [{a: "1", b: "2", c: "3"}]); |
|
23 assert.deepEqual(parse("a,b,c\n\"1\",2,3\n"), [{a: "1", b: "2", c: "3"}]); |
|
24 }, |
|
25 "parses quoted values with quotes": function(parse) { |
|
26 assert.deepEqual(parse("a\n\"\"\"hello\"\"\""), [{a: "\"hello\""}]); |
|
27 }, |
|
28 "parses quoted values with newlines": function(parse) { |
|
29 assert.deepEqual(parse("a\n\"new\nline\""), [{a: "new\nline"}]); |
|
30 assert.deepEqual(parse("a\n\"new\rline\""), [{a: "new\rline"}]); |
|
31 assert.deepEqual(parse("a\n\"new\r\nline\""), [{a: "new\r\nline"}]); |
|
32 }, |
|
33 "parses unix newlines": function(parse) { |
|
34 assert.deepEqual(parse("a,b,c\n1,2,3\n4,5,\"6\"\n7,8,9"), [ |
|
35 {a: "1", b: "2", c: "3"}, |
|
36 {a: "4", b: "5", c: "6"}, |
|
37 {a: "7", b: "8", c: "9"} |
|
38 ]); |
|
39 }, |
|
40 "parses mac newlines": function(parse) { |
|
41 assert.deepEqual(parse("a,b,c\r1,2,3\r4,5,\"6\"\r7,8,9"), [ |
|
42 {a: "1", b: "2", c: "3"}, |
|
43 {a: "4", b: "5", c: "6"}, |
|
44 {a: "7", b: "8", c: "9"} |
|
45 ]); |
|
46 }, |
|
47 "parses dos newlines": function(parse) { |
|
48 assert.deepEqual(parse("a,b,c\r\n1,2,3\r\n4,5,\"6\"\r\n7,8,9"), [ |
|
49 {a: "1", b: "2", c: "3"}, |
|
50 {a: "4", b: "5", c: "6"}, |
|
51 {a: "7", b: "8", c: "9"} |
|
52 ]); |
|
53 } |
|
54 }, |
|
55 "parseRows": { |
|
56 topic: function() { |
|
57 return d3.csv.parseRows; |
|
58 }, |
|
59 "returns an array of arrays": function(parse) { |
|
60 assert.deepEqual(parse("a,b,c\n"), [["a", "b", "c"]]); |
|
61 }, |
|
62 "parses quoted values": function(parse) { |
|
63 assert.deepEqual(parse("\"1\",2,3\n"), [["1", "2", "3"]]); |
|
64 assert.deepEqual(parse("\"hello\""), [["hello"]]); |
|
65 }, |
|
66 "parses quoted values with quotes": function(parse) { |
|
67 assert.deepEqual(parse("\"\"\"hello\"\"\""), [["\"hello\""]]); |
|
68 }, |
|
69 "parses quoted values with newlines": function(parse) { |
|
70 assert.deepEqual(parse("\"new\nline\""), [["new\nline"]]); |
|
71 assert.deepEqual(parse("\"new\rline\""), [["new\rline"]]); |
|
72 assert.deepEqual(parse("\"new\r\nline\""), [["new\r\nline"]]); |
|
73 }, |
|
74 "parses unix newlines": function(parse) { |
|
75 assert.deepEqual(parse("a,b,c\n1,2,3\n4,5,\"6\"\n7,8,9"), [ |
|
76 ["a", "b", "c"], |
|
77 ["1", "2", "3"], |
|
78 ["4", "5", "6"], |
|
79 ["7", "8", "9"] |
|
80 ]); |
|
81 }, |
|
82 "parses mac newlines": function(parse) { |
|
83 assert.deepEqual(parse("a,b,c\r1,2,3\r4,5,\"6\"\r7,8,9"), [ |
|
84 ["a", "b", "c"], |
|
85 ["1", "2", "3"], |
|
86 ["4", "5", "6"], |
|
87 ["7", "8", "9"] |
|
88 ]); |
|
89 }, |
|
90 "parses dos newlines": function(parse) { |
|
91 assert.deepEqual(parse("a,b,c\r\n1,2,3\r\n4,5,\"6\"\r\n7,8,9"), [ |
|
92 ["a", "b", "c"], |
|
93 ["1", "2", "3"], |
|
94 ["4", "5", "6"], |
|
95 ["7", "8", "9"] |
|
96 ]); |
|
97 } |
|
98 } |
|
99 }); |
|
100 |
|
101 suite.export(module); |