fatsify核心功能示例测试!!!
This commit is contained in:
194
node_modules/fast-json-stringify/test/integer.test.js
generated
vendored
Normal file
194
node_modules/fast-json-stringify/test/integer.test.js
generated
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
'use strict'
|
||||
|
||||
const { test } = require('node:test')
|
||||
|
||||
const validator = require('is-my-json-valid')
|
||||
const build = require('..')
|
||||
const ROUNDING_TYPES = ['ceil', 'floor', 'round']
|
||||
|
||||
test('render an integer as JSON', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
title: 'integer',
|
||||
type: 'integer'
|
||||
}
|
||||
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema)
|
||||
const output = stringify(1615)
|
||||
|
||||
t.assert.equal(output, '1615')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
|
||||
test('render a float as an integer', (t) => {
|
||||
t.plan(2)
|
||||
try {
|
||||
build({
|
||||
title: 'float as integer',
|
||||
type: 'integer'
|
||||
}, { rounding: 'foobar' })
|
||||
} catch (error) {
|
||||
t.assert.ok(error)
|
||||
t.assert.equal(error.message, 'Unsupported integer rounding method foobar')
|
||||
}
|
||||
})
|
||||
|
||||
test('throws on NaN', (t) => {
|
||||
t.plan(1)
|
||||
|
||||
const schema = {
|
||||
title: 'integer',
|
||||
type: 'integer'
|
||||
}
|
||||
|
||||
const stringify = build(schema)
|
||||
t.assert.throws(() => stringify(NaN), new Error('The value "NaN" cannot be converted to an integer.'))
|
||||
})
|
||||
|
||||
test('render a float as an integer', (t) => {
|
||||
const cases = [
|
||||
{ input: Math.PI, output: '3' },
|
||||
{ input: 5.0, output: '5' },
|
||||
{ input: null, output: '0' },
|
||||
{ input: 0, output: '0' },
|
||||
{ input: 0.0, output: '0' },
|
||||
{ input: 42, output: '42' },
|
||||
{ input: 1.99999, output: '1' },
|
||||
{ input: -45.05, output: '-45' },
|
||||
{ input: 3333333333333333, output: '3333333333333333' },
|
||||
{ input: Math.PI, output: '3', rounding: 'trunc' },
|
||||
{ input: 5.0, output: '5', rounding: 'trunc' },
|
||||
{ input: null, output: '0', rounding: 'trunc' },
|
||||
{ input: 0, output: '0', rounding: 'trunc' },
|
||||
{ input: 0.0, output: '0', rounding: 'trunc' },
|
||||
{ input: 42, output: '42', rounding: 'trunc' },
|
||||
{ input: 1.99999, output: '1', rounding: 'trunc' },
|
||||
{ input: -45.05, output: '-45', rounding: 'trunc' },
|
||||
{ input: 0.95, output: '1', rounding: 'ceil' },
|
||||
{ input: 0.2, output: '1', rounding: 'ceil' },
|
||||
{ input: 45.95, output: '45', rounding: 'floor' },
|
||||
{ input: -45.05, output: '-46', rounding: 'floor' },
|
||||
{ input: 45.44, output: '45', rounding: 'round' },
|
||||
{ input: 45.95, output: '46', rounding: 'round' }
|
||||
]
|
||||
|
||||
t.plan(cases.length * 2)
|
||||
cases.forEach(checkInteger)
|
||||
|
||||
function checkInteger ({ input, output, rounding }) {
|
||||
const schema = {
|
||||
title: 'float as integer',
|
||||
type: 'integer'
|
||||
}
|
||||
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema, { rounding })
|
||||
const str = stringify(input)
|
||||
|
||||
t.assert.equal(str, output)
|
||||
t.assert.ok(validate(JSON.parse(str)), 'valid schema')
|
||||
}
|
||||
})
|
||||
|
||||
test('render an object with an integer as JSON', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
title: 'object with integer',
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema)
|
||||
const output = stringify({
|
||||
id: 1615
|
||||
})
|
||||
|
||||
t.assert.equal(output, '{"id":1615}')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
|
||||
test('render an array with an integer as JSON', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
title: 'array with integer',
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'integer'
|
||||
}
|
||||
}
|
||||
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema)
|
||||
const output = stringify([1615])
|
||||
|
||||
t.assert.equal(output, '[1615]')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
|
||||
test('render an object with an additionalProperty of type integer as JSON', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
title: 'object with integer',
|
||||
type: 'object',
|
||||
additionalProperties: {
|
||||
type: 'integer'
|
||||
}
|
||||
}
|
||||
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema)
|
||||
const output = stringify({
|
||||
num: 1615
|
||||
})
|
||||
|
||||
t.assert.equal(output, '{"num":1615}')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
|
||||
test('should round integer object parameter', t => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = { type: 'object', properties: { magic: { type: 'integer' } } }
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema, { rounding: 'ceil' })
|
||||
const output = stringify({ magic: 4.2 })
|
||||
|
||||
t.assert.equal(output, '{"magic":5}')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
|
||||
test('should not stringify a property if it does not exist', t => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = { title: 'Example Schema', type: 'object', properties: { age: { type: 'integer' } } }
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema)
|
||||
const output = stringify({})
|
||||
|
||||
t.assert.equal(output, '{}')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
|
||||
ROUNDING_TYPES.forEach((rounding) => {
|
||||
test(`should not stringify a property if it does not exist (rounding: ${rounding})`, t => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = { type: 'object', properties: { magic: { type: 'integer' } } }
|
||||
const validate = validator(schema)
|
||||
const stringify = build(schema, { rounding })
|
||||
const output = stringify({})
|
||||
|
||||
t.assert.equal(output, '{}')
|
||||
t.assert.ok(validate(JSON.parse(output)), 'valid schema')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user