Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jju/test/test_stringify.js')
-rw-r--r--node_modules/jju/test/test_stringify.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/node_modules/jju/test/test_stringify.js b/node_modules/jju/test/test_stringify.js
new file mode 100644
index 000000000..c97e38e93
--- /dev/null
+++ b/node_modules/jju/test/test_stringify.js
@@ -0,0 +1,89 @@
+var assert = require('assert')
+var parse = require('../').parse
+var stringify = require('../').stringify
+
+function deepEqual(x, y) {
+ if (Number.isNaN(x)) {
+ return assert(Number.isNaN(y))
+ }
+ assert.deepEqual(x, y)
+}
+
+function addTest(arg, arg2, arg3) {
+ function fn() {
+ deepEqual(parse(stringify(arg)), arg2 === undefined ? arg : arg2)
+ if (arg !== undefined) deepEqual(JSON.parse(stringify(arg, {mode: 'json', indent: false})), (arg3 === undefined ? (arg2 === undefined ? arg : arg2) : arg3))
+ }
+
+ if (typeof(describe) === 'function') {
+ it('test_stringify: ' + JSON.stringify(arg), fn)
+ } else {
+ fn()
+ }
+}
+
+addTest(0)
+addTest(-0)
+addTest(NaN, undefined, null)
+addTest(Infinity, undefined, null)
+addTest(-Infinity, undefined, null)
+addTest(123)
+addTest(19508130958019385.135135)
+addTest(-2e123)
+addTest(null)
+addTest(undefined)
+addTest([])
+addTest([,,,,,,,], [null,null,null,null,null,null,null])
+addTest([undefined,null,1,2,3,], [null,null,1,2,3])
+addTest([[[[]]],[[]]])
+addTest({})
+addTest({1:2,3:4})
+addTest({1:{1:{1:{1:4}}}, 3:4})
+addTest({1:undefined, 3:undefined}, {})
+addTest(new Number(4), 4)
+addTest(new Boolean(true), true)
+addTest(new String('xqefxef'), 'xqefxef')
+addTest(new Boolean(), false)
+
+var r='';for (var i=0; i<5000; i++) {r+=String.fromCharCode(i)}
+addTest(r)
+
+assert.equal("[1, 2, 3]", stringify([1, 2, 3], {indent: 1}))
+assert.equal("[1, 2, 3]", stringify([1, 2, 3], {indent: 2}))
+
+var oddball = Object(42)
+oddball.__proto__ = { __proto__: null }
+assert.equal('{}', stringify(oddball))
+
+/* this WILL throw
+var falseNum = Object("37")
+falseNum.__proto__ = Number.prototype
+assert.equal("{0: '3', 1: '7'}", stringify(falseNum))*/
+
+assert.equal(stringify(Infinity), 'Infinity')
+assert.equal(stringify(Infinity, {mode: 'json'}), 'null')
+assert.equal(stringify(NaN), 'NaN')
+assert.equal(stringify(NaN, {mode: 'json'}), 'null')
+assert.equal(stringify(-0), '-0')
+
+assert.equal(stringify('test', null), "'test'")
+
+var array = [""]
+var expected = "''"
+for (var i = 0; i < 1000; i++) {
+ array.push("")
+ expected = "''," + expected
+}
+expected = '[' + expected + ']'
+assert.equal(expected, stringify(array, {indent: false}))
+
+assert.strictEqual(stringify([1,2,3], function(){}), undefined)
+
+// don't stringify prototype
+assert.equal('{a: 1}', stringify({a:1,__proto__:{b:2}}))
+
+// sort keys tests
+assert.equal('{a: 1, b: 2, z: 3}', stringify({b:2,a:1,z:3}, {sort_keys: 1}))
+assert.equal('{a: 1, b: {a: 2, b: 5, c: 1}, z: 3}', stringify({b:{c:1,a:2,b:5},a:1,z:3}, {sort_keys: 1}))
+assert.equal('{a: [3, 5, 1], b: 2, z: 3}', stringify({b:2,a:[3,5,1],z:3}, {sort_keys: 1}))
+assert.equal('{b: 2, a: 1, z: 3}', stringify({b:2,a:1,z:3}, {sort_keys: 0}))