diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/toml/test | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-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.toml | 5 | ||||
| -rw-r--r-- | node_modules/toml/test/example.toml | 32 | ||||
| -rw-r--r-- | node_modules/toml/test/hard_example.toml | 33 | ||||
| -rw-r--r-- | node_modules/toml/test/inline_tables.toml | 10 | ||||
| -rw-r--r-- | node_modules/toml/test/literal_strings.toml | 5 | ||||
| -rw-r--r-- | node_modules/toml/test/multiline_eat_whitespace.toml | 15 | ||||
| -rw-r--r-- | node_modules/toml/test/multiline_literal_strings.toml | 7 | ||||
| -rw-r--r-- | node_modules/toml/test/multiline_strings.toml | 6 | ||||
| -rw-r--r-- | node_modules/toml/test/smoke.js | 22 | ||||
| -rw-r--r-- | node_modules/toml/test/table_arrays_easy.toml | 10 | ||||
| -rw-r--r-- | node_modules/toml/test/table_arrays_hard.toml | 31 | ||||
| -rw-r--r-- | node_modules/toml/test/test_toml.js | 586 |
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(); + } +}; |
