aboutsummaryrefslogtreecommitdiff
path: root/node_modules/toml/test
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/toml/test
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/toml/test')
-rw-r--r--node_modules/toml/test/bad.toml5
-rw-r--r--node_modules/toml/test/example.toml32
-rw-r--r--node_modules/toml/test/hard_example.toml33
-rw-r--r--node_modules/toml/test/inline_tables.toml10
-rw-r--r--node_modules/toml/test/literal_strings.toml5
-rw-r--r--node_modules/toml/test/multiline_eat_whitespace.toml15
-rw-r--r--node_modules/toml/test/multiline_literal_strings.toml7
-rw-r--r--node_modules/toml/test/multiline_strings.toml6
-rw-r--r--node_modules/toml/test/smoke.js22
-rw-r--r--node_modules/toml/test/table_arrays_easy.toml10
-rw-r--r--node_modules/toml/test/table_arrays_hard.toml31
-rw-r--r--node_modules/toml/test/test_toml.js586
12 files changed, 762 insertions, 0 deletions
diff --git a/node_modules/toml/test/bad.toml b/node_modules/toml/test/bad.toml
new file mode 100644
index 00000000..d51c3f31
--- /dev/null
+++ b/node_modules/toml/test/bad.toml
@@ -0,0 +1,5 @@
+[something]
+awesome = "this is"
+
+[something.awesome]
+this = "isn't"
diff --git a/node_modules/toml/test/example.toml b/node_modules/toml/test/example.toml
new file mode 100644
index 00000000..ea9dc35d
--- /dev/null
+++ b/node_modules/toml/test/example.toml
@@ -0,0 +1,32 @@
+# This is a TOML document. Boom.
+
+title = "TOML Example"
+
+[owner]
+name = "Tom Preston-Werner"
+organization = "GitHub"
+bio = "GitHub Cofounder & CEO\n\tLikes \"tater tots\" and beer and backslashes: \\"
+dob = 1979-05-27T07:32:00Z # First class dates? Why not?
+
+[database]
+server = "192.168.1.1"
+ports = [ 8001, 8001, 8003 ]
+connection_max = 5000
+connection_min = -2 # Don't ask me how
+max_temp = 87.1 # It's a float
+min_temp = -17.76
+enabled = true
+
+[servers]
+
+ # You can indent as you please. Tabs or spaces. TOML don't care.
+ [servers.alpha]
+ ip = "10.0.0.1"
+ dc = "eqdc10"
+
+ [servers.beta]
+ ip = "10.0.0.2"
+ dc = "eqdc10"
+
+[clients]
+data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
diff --git a/node_modules/toml/test/hard_example.toml b/node_modules/toml/test/hard_example.toml
new file mode 100644
index 00000000..38856c87
--- /dev/null
+++ b/node_modules/toml/test/hard_example.toml
@@ -0,0 +1,33 @@
+# Test file for TOML
+# Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate
+# This part you'll really hate
+
+[the]
+test_string = "You'll hate me after this - #" # " Annoying, isn't it?
+
+ [the.hard]
+ test_array = [ "] ", " # "] # ] There you go, parse this!
+ test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ]
+ # You didn't think it'd as easy as chucking out the last #, did you?
+ another_test_string = " Same thing, but with a string #"
+ harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too"
+ # Things will get harder
+
+ [the.hard."bit#"]
+ "what?" = "You don't think some user won't do that?"
+ multi_line_array = [
+ "]",
+ # ] Oh yes I did
+ ]
+
+# Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test
+
+#[error] if you didn't catch this, your parser is broken
+#string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this
+#array = [
+# "This might most likely happen in multiline arrays",
+# Like here,
+# "or here,
+# and here"
+# ] End of array comment, forgot the #
+#number = 3.14 pi <--again forgot the #
diff --git a/node_modules/toml/test/inline_tables.toml b/node_modules/toml/test/inline_tables.toml
new file mode 100644
index 00000000..c91088ee
--- /dev/null
+++ b/node_modules/toml/test/inline_tables.toml
@@ -0,0 +1,10 @@
+name = { first = "Tom", last = "Preston-Werner" }
+point = { x = 1, y = 2 }
+nested = { x = { a = { b = 3 } } }
+
+points = [ { x = 1, y = 2, z = 3 },
+ { x = 7, y = 8, z = 9 },
+ { x = 2, y = 4, z = 8 } ]
+
+arrays = [ { x = [1, 2, 3], y = [4, 5, 6] },
+ { x = [7, 8, 9], y = [0, 1, 2] } ]
diff --git a/node_modules/toml/test/literal_strings.toml b/node_modules/toml/test/literal_strings.toml
new file mode 100644
index 00000000..36772bb6
--- /dev/null
+++ b/node_modules/toml/test/literal_strings.toml
@@ -0,0 +1,5 @@
+# What you see is what you get.
+winpath = 'C:\Users\nodejs\templates'
+winpath2 = '\\ServerX\admin$\system32\'
+quoted = 'Tom "Dubs" Preston-Werner'
+regex = '<\i\c*\s*>'
diff --git a/node_modules/toml/test/multiline_eat_whitespace.toml b/node_modules/toml/test/multiline_eat_whitespace.toml
new file mode 100644
index 00000000..904c1707
--- /dev/null
+++ b/node_modules/toml/test/multiline_eat_whitespace.toml
@@ -0,0 +1,15 @@
+# The following strings are byte-for-byte equivalent:
+key1 = "The quick brown fox jumps over the lazy dog."
+
+key2 = """
+The quick brown \
+
+
+ fox jumps over \
+ the lazy dog."""
+
+key3 = """\
+ The quick brown \
+ fox jumps over \
+ the lazy dog.\
+ """
diff --git a/node_modules/toml/test/multiline_literal_strings.toml b/node_modules/toml/test/multiline_literal_strings.toml
new file mode 100644
index 00000000..bc88494c
--- /dev/null
+++ b/node_modules/toml/test/multiline_literal_strings.toml
@@ -0,0 +1,7 @@
+regex2 = '''I [dw]on't need \d{2} apples'''
+lines = '''
+The first newline is
+trimmed in raw strings.
+ All other whitespace
+ is preserved.
+'''
diff --git a/node_modules/toml/test/multiline_strings.toml b/node_modules/toml/test/multiline_strings.toml
new file mode 100644
index 00000000..6eb8c45a
--- /dev/null
+++ b/node_modules/toml/test/multiline_strings.toml
@@ -0,0 +1,6 @@
+# The following strings are byte-for-byte equivalent:
+key1 = "One\nTwo"
+key2 = """One\nTwo"""
+key3 = """
+One
+Two"""
diff --git a/node_modules/toml/test/smoke.js b/node_modules/toml/test/smoke.js
new file mode 100644
index 00000000..7769f9c4
--- /dev/null
+++ b/node_modules/toml/test/smoke.js
@@ -0,0 +1,22 @@
+var fs = require('fs');
+var parser = require('../index');
+
+var codes = [
+ "# test\n my.key=\"value\"\nother = 101\nthird = -37",
+ "first = 1.2\nsecond = -56.02\nth = true\nfth = false",
+ "time = 1979-05-27T07:32:00Z",
+ "test = [\"one\", ]",
+ "test = [[1, 2,], [true, false,],]",
+ "[my.sub.path]\nkey = true\nother = -15.3\n[my.sub]\nkey=false",
+ "arry = [\"one\", \"two\",\"thr\nee\", \"\\u03EA\"]",
+ fs.readFileSync(__dirname + '/example.toml', 'utf8'),
+ fs.readFileSync(__dirname + '/hard_example.toml', 'utf8')
+]
+
+console.log("=============================================");
+for(i in codes) {
+ var code = codes[i];
+ console.log(code + "\n");
+ console.log(JSON.stringify(parser.parse(code)));
+ console.log("=============================================");
+}
diff --git a/node_modules/toml/test/table_arrays_easy.toml b/node_modules/toml/test/table_arrays_easy.toml
new file mode 100644
index 00000000..ac3883bb
--- /dev/null
+++ b/node_modules/toml/test/table_arrays_easy.toml
@@ -0,0 +1,10 @@
+[[products]]
+name = "Hammer"
+sku = 738594937
+
+[[products]]
+
+[[products]]
+name = "Nail"
+sku = 284758393
+color = "gray"
diff --git a/node_modules/toml/test/table_arrays_hard.toml b/node_modules/toml/test/table_arrays_hard.toml
new file mode 100644
index 00000000..2ade5409
--- /dev/null
+++ b/node_modules/toml/test/table_arrays_hard.toml
@@ -0,0 +1,31 @@
+[[fruit]]
+name = "durian"
+variety = []
+
+[[fruit]]
+name = "apple"
+
+ [fruit.physical]
+ color = "red"
+ shape = "round"
+
+ [[fruit.variety]]
+ name = "red delicious"
+
+ [[fruit.variety]]
+ name = "granny smith"
+
+[[fruit]]
+
+[[fruit]]
+name = "banana"
+
+ [[fruit.variety]]
+ name = "plantain"
+
+[[fruit]]
+name = "orange"
+
+[fruit.physical]
+color = "orange"
+shape = "round"
diff --git a/node_modules/toml/test/test_toml.js b/node_modules/toml/test/test_toml.js
new file mode 100644
index 00000000..adbdc4a6
--- /dev/null
+++ b/node_modules/toml/test/test_toml.js
@@ -0,0 +1,586 @@
+var toml = require('../');
+var fs = require('fs');
+
+var assert = require("nodeunit").assert;
+
+assert.parsesToml = function(tomlStr, expected) {
+ try {
+ var actual = toml.parse(tomlStr);
+ } catch (e) {
+ var errInfo = "line: " + e.line + ", column: " + e.column;
+ return assert.fail("TOML parse error: " + e.message, errInfo, null, "at", assert.parsesToml);
+ }
+ return assert.deepEqual(actual, expected);
+};
+
+var exampleExpected = {
+ title: "TOML Example",
+ owner: {
+ name: "Tom Preston-Werner",
+ organization: "GitHub",
+ bio: "GitHub Cofounder & CEO\n\tLikes \"tater tots\" and beer and backslashes: \\",
+ dob: new Date("1979-05-27T07:32:00Z")
+ },
+ database: {
+ server: "192.168.1.1",
+ ports: [8001, 8001, 8003],
+ connection_max: 5000,
+ connection_min: -2,
+ max_temp: 87.1,
+ min_temp: -17.76,
+ enabled: true
+ },
+ servers: {
+ alpha: {
+ ip: "10.0.0.1",
+ dc: "eqdc10"
+ },
+ beta: {
+ ip: "10.0.0.2",
+ dc: "eqdc10"
+ }
+ },
+ clients: {
+ data: [ ["gamma", "delta"], [1, 2] ]
+ }
+};
+
+var hardExampleExpected = {
+ the: {
+ hard: {
+ another_test_string: ' Same thing, but with a string #',
+ 'bit#': {
+ multi_line_array: [']'],
+ 'what?': "You don't think some user won't do that?"
+ },
+ harder_test_string: " And when \"'s are in the string, along with # \"",
+ test_array: ['] ', ' # '],
+ test_array2: ['Test #11 ]proved that', 'Experiment #9 was a success']
+ },
+ test_string: "You'll hate me after this - #"
+ }
+};
+
+var easyTableArrayExpected = {
+ "products": [
+ { "name": "Hammer", "sku": 738594937 },
+ { },
+ { "name": "Nail", "sku": 284758393, "color": "gray" }
+ ]
+};
+
+var hardTableArrayExpected = {
+ "fruit": [
+ {
+ "name": "durian",
+ "variety": []
+ },
+ {
+ "name": "apple",
+ "physical": {
+ "color": "red",
+ "shape": "round"
+ },
+ "variety": [
+ { "name": "red delicious" },
+ { "name": "granny smith" }
+ ]
+ },
+ {},
+ {
+ "name": "banana",
+ "variety": [
+ { "name": "plantain" }
+ ]
+ },
+ {
+ "name": "orange",
+ "physical": {
+ "color": "orange",
+ "shape": "round"
+ }
+ }
+ ]
+}
+
+var badInputs = [
+ '[error] if you didn\'t catch this, your parser is broken',
+ 'string = "Anything other than tabs, spaces and newline after a table or key value pair has ended should produce an error unless it is a comment" like this',
+ 'array = [\n \"This might most likely happen in multiline arrays\",\n Like here,\n \"or here,\n and here\"\n ] End of array comment, forgot the #',
+ 'number = 3.14 pi <--again forgot the #'
+];
+
+exports.testParsesExample = function(test) {
+ var str = fs.readFileSync(__dirname + "/example.toml", 'utf-8')
+ test.parsesToml(str, exampleExpected);
+ test.done();
+};
+
+exports.testParsesHardExample = function(test) {
+ var str = fs.readFileSync(__dirname + "/hard_example.toml", 'utf-8')
+ test.parsesToml(str, hardExampleExpected);
+ test.done();
+};
+
+exports.testEasyTableArrays = function(test) {
+ var str = fs.readFileSync(__dirname + "/table_arrays_easy.toml", 'utf8')
+ test.parsesToml(str, easyTableArrayExpected);
+ test.done();
+};
+
+exports.testHarderTableArrays = function(test) {
+ var str = fs.readFileSync(__dirname + "/table_arrays_hard.toml", 'utf8')
+ test.parsesToml(str, hardTableArrayExpected);
+ test.done();
+};
+
+exports.testSupportsTrailingCommasInArrays = function(test) {
+ var str = 'arr = [1, 2, 3,]';
+ var expected = { arr: [1, 2, 3] };
+ test.parsesToml(str, expected);
+ test.done();
+};
+
+exports.testSingleElementArrayWithNoTrailingComma = function(test) {
+ var str = "a = [1]";
+ test.parsesToml(str, {
+ a: [1]
+ });
+ test.done();
+};
+
+exports.testEmptyArray = function(test) {
+ var str = "a = []";
+ test.parsesToml(str, {
+ a: []
+ });
+ test.done();
+};
+
+exports.testArrayWithWhitespace = function(test) {
+ var str = "[versions]\nfiles = [\n 3, \n 5 \n\n ]";
+ test.parsesToml(str, {
+ versions: {
+ files: [3, 5]
+ }
+ });
+ test.done();
+};
+
+exports.testEmptyArrayWithWhitespace = function(test) {
+ var str = "[versions]\nfiles = [\n \n ]";
+ test.parsesToml(str, {
+ versions: {
+ files: []
+ }
+ });
+ test.done();
+};
+
+exports.testDefineOnSuperkey = function(test) {
+ var str = "[a.b]\nc = 1\n\n[a]\nd = 2";
+ var expected = {
+ a: {
+ b: {
+ c: 1
+ },
+ d: 2
+ }
+ };
+ test.parsesToml(str, expected);
+ test.done();
+};
+
+exports.testWhitespace = function(test) {
+ var str = "a = 1\n \n b = 2 ";
+ test.parsesToml(str, {
+ a: 1, b: 2
+ });
+ test.done();
+};
+
+exports.testUnicode = function(test) {
+ var str = "str = \"My name is Jos\\u00E9\"";
+ test.parsesToml(str, {
+ str: "My name is Jos\u00E9"
+ });
+
+ var str = "str = \"My name is Jos\\U000000E9\"";
+ test.parsesToml(str, {
+ str: "My name is Jos\u00E9"
+ });
+ test.done();
+};
+
+exports.testMultilineStrings = function(test) {
+ var str = fs.readFileSync(__dirname + "/multiline_strings.toml", 'utf8');
+ test.parsesToml(str, {
+ key1: "One\nTwo",
+ key2: "One\nTwo",
+ key3: "One\nTwo"
+ });
+ test.done();
+};
+
+exports.testMultilineEatWhitespace = function(test) {
+ var str = fs.readFileSync(__dirname + "/multiline_eat_whitespace.toml", 'utf8');
+ test.parsesToml(str, {
+ key1: "The quick brown fox jumps over the lazy dog.",
+ key2: "The quick brown fox jumps over the lazy dog.",
+ key3: "The quick brown fox jumps over the lazy dog."
+ });
+ test.done();
+};
+
+exports.testLiteralStrings = function(test) {
+ var str = fs.readFileSync(__dirname + "/literal_strings.toml", 'utf8');
+ test.parsesToml(str, {
+ winpath: "C:\\Users\\nodejs\\templates",
+ winpath2: "\\\\ServerX\\admin$\\system32\\",
+ quoted: "Tom \"Dubs\" Preston-Werner",
+ regex: "<\\i\\c*\\s*>"
+ });
+ test.done();
+};
+
+exports.testMultilineLiteralStrings = function(test) {
+ var str = fs.readFileSync(__dirname + "/multiline_literal_strings.toml", 'utf8');
+ test.parsesToml(str, {
+ regex2: "I [dw]on't need \\d{2} apples",
+ lines: "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n"
+ });
+ test.done();
+};
+
+exports.testIntegerFormats = function(test) {
+ var str = "a = +99\nb = 42\nc = 0\nd = -17\ne = 1_000_001\nf = 1_2_3_4_5 # why u do dis";
+ test.parsesToml(str, {
+ a: 99,
+ b: 42,
+ c: 0,
+ d: -17,
+ e: 1000001,
+ f: 12345
+ });
+ test.done();
+};
+
+exports.testFloatFormats = function(test) {
+ var str = "a = +1.0\nb = 3.1415\nc = -0.01\n" +
+ "d = 5e+22\ne = 1e6\nf = -2E-2\n" +
+ "g = 6.626e-34\n" +
+ "h = 9_224_617.445_991_228_313\n" +
+ "i = 1e1_000";
+ test.parsesToml(str, {
+ a: 1.0,
+ b: 3.1415,
+ c: -0.01,
+ d: 5e22,
+ e: 1e6,
+ f: -2e-2,
+ g: 6.626e-34,
+ h: 9224617.445991228313,
+ i: 1e1000
+ });
+ test.done();
+};
+
+exports.testDate = function(test) {
+ var date = new Date("1979-05-27T07:32:00Z");
+ test.parsesToml("a = 1979-05-27T07:32:00Z", {
+ a: date
+ });
+ test.done();
+};
+
+exports.testDateWithOffset = function(test) {
+ var date1 = new Date("1979-05-27T07:32:00-07:00"),
+ date2 = new Date("1979-05-27T07:32:00+02:00");
+ test.parsesToml("a = 1979-05-27T07:32:00-07:00\nb = 1979-05-27T07:32:00+02:00", {
+ a: date1,
+ b: date2
+ });
+ test.done();
+};
+
+exports.testDateWithSecondFraction = function(test) {
+ var date = new Date("1979-05-27T00:32:00.999999-07:00");
+ test.parsesToml("a = 1979-05-27T00:32:00.999999-07:00", {
+ a: date
+ });
+ test.done();
+};
+
+exports.testDateFromIsoString = function(test) {
+ // https://github.com/BinaryMuse/toml-node/issues/20
+ var date = new Date(),
+ dateStr = date.toISOString(),
+ tomlStr = "a = " + dateStr;
+
+ test.parsesToml(tomlStr, {
+ a: date
+ });
+ test.done();
+};
+
+exports.testLeadingNewlines = function(test) {
+ // https://github.com/BinaryMuse/toml-node/issues/22
+ var str = "\ntest = \"ing\"";
+ test.parsesToml(str, {
+ test: "ing"
+ });
+ test.done();
+};
+
+exports.testInlineTables = function(test) {
+ var str = fs.readFileSync(__dirname + "/inline_tables.toml", 'utf8');
+ test.parsesToml(str, {
+ name: {
+ first: "Tom",
+ last: "Preston-Werner"
+ },
+ point: {
+ x: 1,
+ y: 2
+ },
+ nested: {
+ x: {
+ a: {
+ b: 3
+ }
+ }
+ },
+ points: [
+ { x: 1, y: 2, z: 3 },
+ { x: 7, y: 8, z: 9 },
+ { x: 2, y: 4, z: 8 }
+ ],
+ arrays: [
+ { x: [1, 2, 3], y: [4, 5, 6] },
+ { x: [7, 8, 9], y: [0, 1, 2] }
+ ]
+ });
+ test.done();
+};
+
+exports.testEmptyInlineTables = function(test) {
+ // https://github.com/BinaryMuse/toml-node/issues/24
+ var str = "a = { }";
+ test.parsesToml(str, {
+ a: {}
+ });
+ test.done();
+};
+
+exports.testKeyNamesWithWhitespaceAroundStartAndFinish = function(test) {
+ var str = "[ a ]\nb = 1";
+ test.parsesToml(str, {
+ a: {
+ b: 1
+ }
+ });
+ test.done();
+};
+
+exports.testKeyNamesWithWhitespaceAroundDots = function(test) {
+ var str = "[ a . b . c]\nd = 1";
+ test.parsesToml(str, {
+ a: {
+ b: {
+ c: {
+ d: 1
+ }
+ }
+ }
+ });
+ test.done();
+};
+
+exports.testSimpleQuotedKeyNames = function(test) {
+ var str = "[\"ʞ\"]\na = 1";
+ test.parsesToml(str, {
+ "ʞ": {
+ a: 1
+ }
+ });
+ test.done();
+};
+
+exports.testComplexQuotedKeyNames = function(test) {
+ var str = "[ a . \"ʞ\" . c ]\nd = 1";
+ test.parsesToml(str, {
+ a: {
+ "ʞ": {
+ c: {
+ d: 1
+ }
+ }
+ }
+ });
+ test.done();
+};
+
+exports.testEscapedQuotesInQuotedKeyNames = function(test) {
+ test.parsesToml("[\"the \\\"thing\\\"\"]\na = true", {
+ 'the "thing"': {
+ a: true
+ }
+ });
+ test.done();
+};
+
+exports.testMoreComplexQuotedKeyNames = function(test) {
+ // https://github.com/BinaryMuse/toml-node/issues/21
+ test.parsesToml('["the\\ key"]\n\none = "one"\ntwo = 2\nthree = false', {
+ "the\\ key": {
+ one: "one",
+ two: 2,
+ three: false
+ }
+ });
+ test.parsesToml('[a."the\\ key"]\n\none = "one"\ntwo = 2\nthree = false', {
+ a: {
+ "the\\ key": {
+ one: "one",
+ two: 2,
+ three: false
+ }
+ }
+ });
+ test.parsesToml('[a."the-key"]\n\none = "one"\ntwo = 2\nthree = false', {
+ a: {
+ "the-key": {
+ one: "one",
+ two: 2,
+ three: false
+ }
+ }
+ });
+ test.parsesToml('[a."the.key"]\n\none = "one"\ntwo = 2\nthree = false', {
+ a: {
+ "the.key": {
+ one: "one",
+ two: 2,
+ three: false
+ }
+ }
+ });
+ // https://github.com/BinaryMuse/toml-node/issues/34
+ test.parsesToml('[table]\n\'a "quoted value"\' = "value"', {
+ table: {
+ 'a "quoted value"': "value"
+ }
+ });
+ // https://github.com/BinaryMuse/toml-node/issues/33
+ test.parsesToml('[module]\n"foo=bar" = "zzz"', {
+ module: {
+ "foo=bar": "zzz"
+ }
+ });
+
+ test.done();
+};
+
+exports.testErrorOnBadUnicode = function(test) {
+ var str = "str = \"My name is Jos\\uD800\"";
+ test.throws(function() {
+ toml.parse(str);
+ });
+ test.done();
+};
+
+exports.testErrorOnDotAtStartOfKey = function(test) {
+ test.throws(function() {
+ var str = "[.a]\nb = 1";
+ toml.parse(str);
+ });
+ test.done()
+};
+
+exports.testErrorOnDotAtEndOfKey = function(test) {
+ test.throws(function() {
+ var str = "[.a]\nb = 1";
+ toml.parse(str);
+ });
+ test.done()
+};
+
+exports.testErrorOnTableOverride = function(test) {
+ test.throws(function() {
+ var str = "[a]\nb = 1\n\n[a]\nc = 2";
+ toml.parse(str);
+ });
+ test.done()
+};
+
+exports.testErrorOnKeyOverride = function(test) {
+ test.throws(function() {
+ var str = "[a]\nb = 1\n[a.b]\nc = 2";
+ toml.parse(str);
+ });
+ test.done()
+};
+
+exports.testErrorOnKeyOverrideWithNested = function(test) {
+ // https://github.com/BinaryMuse/toml-node/issues/23
+ test.throws(function() {
+ var str = "[a]\nb = \"a\"\n[a.b.c]";
+ toml.parse(str);
+ }, "existing key 'a.b'");
+ test.done();
+};
+
+exports.testErrorOnKeyOverrideWithArrayTable = function(test) {
+ test.throws(function() {
+ var str = "[a]\nb = 1\n[[a]]\nc = 2";
+ toml.parse(str);
+ });
+ test.done()
+};
+
+exports.testErrorOnKeyReplace = function(test) {
+ test.throws(function() {
+ var str = "[a]\nb = 1\nb = 2";
+ toml.parse(str);
+ });
+ test.done()
+};
+
+exports.testErrorOnInlineTableReplace = function(test) {
+ // https://github.com/BinaryMuse/toml-node/issues/25
+ test.throws(function() {
+ var str = "a = { b = 1 }\n[a]\nc = 2";
+ toml.parse(str);
+ }, "existing key 'a'");
+ test.done();
+};
+
+exports.testErrorOnArrayMismatch = function(test) {
+ test.throws(function() {
+ var str = 'data = [1, 2, "test"]'
+ toml.parse(str);
+ });
+ test.done();
+};
+
+exports.testErrorOnBadInputs = function(test) {
+ var count = 0;
+ for (i in badInputs) {
+ (function(num) {
+ test.throws(function() {
+ toml.parse(badInputs[num]);
+ });
+ })(i);
+ }
+ test.done();
+};
+
+exports.testErrorsHaveCorrectLineAndColumn = function(test) {
+ var str = "[a]\nb = 1\n [a.b]\nc = 2";
+ try { toml.parse(str); }
+ catch (e) {
+ test.equal(e.line, 3);
+ test.equal(e.column, 2);
+ test.done();
+ }
+};