toolkit/javascript/d3/test/csv/parse-test.js
changeset 47 c0b4a8b5a012
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit/javascript/d3/test/csv/parse-test.js	Thu Apr 10 14:20:23 2014 +0200
@@ -0,0 +1,101 @@
+require("../env");
+require("../../d3");
+require("../../d3.csv");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.csv.parse");
+
+suite.addBatch({
+  "parse": {
+    topic: function() {
+      return d3.csv.parse;
+    },
+    "returns an array of objects": function(parse) {
+      assert.deepEqual(parse("a,b,c\n1,2,3\n"), [{a: "1", b: "2", c: "3"}]);
+    },
+    "does not strip whitespace": function(parse) {
+      assert.deepEqual(parse("a,b,c\n 1, 2,3\n"), [{a: " 1", b: " 2", c: "3"}]);
+    },
+    "parses quoted values": function(parse) {
+      assert.deepEqual(parse("a,b,c\n\"1\",2,3"), [{a: "1", b: "2", c: "3"}]);
+      assert.deepEqual(parse("a,b,c\n\"1\",2,3\n"), [{a: "1", b: "2", c: "3"}]);
+    },
+    "parses quoted values with quotes": function(parse) {
+      assert.deepEqual(parse("a\n\"\"\"hello\"\"\""), [{a: "\"hello\""}]);
+    },
+    "parses quoted values with newlines": function(parse) {
+      assert.deepEqual(parse("a\n\"new\nline\""), [{a: "new\nline"}]);
+      assert.deepEqual(parse("a\n\"new\rline\""), [{a: "new\rline"}]);
+      assert.deepEqual(parse("a\n\"new\r\nline\""), [{a: "new\r\nline"}]);
+    },
+    "parses unix newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\n1,2,3\n4,5,\"6\"\n7,8,9"), [
+        {a: "1", b: "2", c: "3"},
+        {a: "4", b: "5", c: "6"},
+        {a: "7", b: "8", c: "9"}
+      ]);
+    },
+    "parses mac newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r1,2,3\r4,5,\"6\"\r7,8,9"), [
+        {a: "1", b: "2", c: "3"},
+        {a: "4", b: "5", c: "6"},
+        {a: "7", b: "8", c: "9"}
+      ]);
+    },
+    "parses dos newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r\n1,2,3\r\n4,5,\"6\"\r\n7,8,9"), [
+        {a: "1", b: "2", c: "3"},
+        {a: "4", b: "5", c: "6"},
+        {a: "7", b: "8", c: "9"}
+      ]);
+    }
+  },
+  "parseRows": {
+    topic: function() {
+      return d3.csv.parseRows;
+    },
+    "returns an array of arrays": function(parse) {
+      assert.deepEqual(parse("a,b,c\n"), [["a", "b", "c"]]);
+    },
+    "parses quoted values": function(parse) {
+      assert.deepEqual(parse("\"1\",2,3\n"), [["1", "2", "3"]]);
+      assert.deepEqual(parse("\"hello\""), [["hello"]]);
+    },
+    "parses quoted values with quotes": function(parse) {
+      assert.deepEqual(parse("\"\"\"hello\"\"\""), [["\"hello\""]]);
+    },
+    "parses quoted values with newlines": function(parse) {
+      assert.deepEqual(parse("\"new\nline\""), [["new\nline"]]);
+      assert.deepEqual(parse("\"new\rline\""), [["new\rline"]]);
+      assert.deepEqual(parse("\"new\r\nline\""), [["new\r\nline"]]);
+    },
+    "parses unix newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\n1,2,3\n4,5,\"6\"\n7,8,9"), [
+        ["a", "b", "c"],
+        ["1", "2", "3"],
+        ["4", "5", "6"],
+        ["7", "8", "9"]
+      ]);
+    },
+    "parses mac newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r1,2,3\r4,5,\"6\"\r7,8,9"), [
+        ["a", "b", "c"],
+        ["1", "2", "3"],
+        ["4", "5", "6"],
+        ["7", "8", "9"]
+      ]);
+    },
+    "parses dos newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r\n1,2,3\r\n4,5,\"6\"\r\n7,8,9"), [
+        ["a", "b", "c"],
+        ["1", "2", "3"],
+        ["4", "5", "6"],
+        ["7", "8", "9"]
+      ]);
+    }
+  }
+});
+
+suite.export(module);