You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
'use strict' |
|
|
|
var test = require('tap').test |
|
var Parse = require('./') |
|
|
|
function successTests (value) { |
|
test('parse successfully with the function', function (t) { |
|
t.plan(2) |
|
var result = Parse(value) |
|
t.error(result.err) |
|
t.deepEqual(result.value, JSON.parse(value)) |
|
}) |
|
|
|
test('parse successfully with the constructor', function (t) { |
|
t.plan(2) |
|
var result = new Parse(value) |
|
t.error(result.err) |
|
t.deepEqual(result.value, JSON.parse(value)) |
|
}) |
|
} |
|
|
|
function failureTests (value) { |
|
var expectedErr |
|
try { |
|
JSON.parse(value) |
|
} catch (err) { |
|
expectedErr = err |
|
} |
|
|
|
test('parse unsuccessfully with the function', function (t) { |
|
t.plan(2) |
|
var result = Parse(value) |
|
t.notOk(result.value, 'no value') |
|
t.equal(result.err.message, expectedErr.message) |
|
}) |
|
|
|
test('parse successfully with the constructor', function (t) { |
|
t.plan(2) |
|
var result = new Parse(value) |
|
t.notOk(result.value, 'no value') |
|
t.equal(result.err.message, expectedErr.message) |
|
}) |
|
} |
|
|
|
successTests('{ "object": 32 }') |
|
failureTests('{ "object": 32')
|
|
|