99 lines
3.1 KiB
JavaScript

'use strict'
const TestRunner = require('test-runner')
const a = require('assert')
const Output = require('../lib/output')
const Definitions = require('../lib/definitions')
const runner = new TestRunner()
runner.test('output.setFlag(name): initial value', function () {
let definitions = new Definitions()
definitions.load([
{ name: 'one', type: Number }
])
let output = new Output(definitions)
a.strictEqual(output.get('one'), undefined)
output.setFlag('--one')
a.strictEqual(output.get('one'), null)
definitions.load([
{ name: 'one', type: Boolean }
])
output = new Output(definitions)
a.strictEqual(output.get('one'), undefined)
output.setFlag('--one')
a.strictEqual(output.get('one'), true)
})
runner.test('output.setOptionValue(name, value)', function () {
const definitions = new Definitions()
definitions.load([
{ name: 'one', type: Number, defaultValue: 1 }
])
const output = new Output(definitions)
a.strictEqual(output.get('one'), 1)
output.setOptionValue('--one', '2')
a.strictEqual(output.get('one'), 2)
})
runner.test('output.setOptionValue(name, value): multiple, defaultValue', function () {
const definitions = new Definitions()
definitions.load([
{ name: 'one', type: Number, multiple: true, defaultValue: [ 1 ] }
])
const output = new Output(definitions)
a.deepStrictEqual(output.get('one'), [ 1 ])
output.setOptionValue('--one', '2')
a.deepStrictEqual(output.get('one'), [ 2 ])
})
runner.test('output.setOptionValue(name, value): multiple 2', function () {
const definitions = new Definitions()
definitions.load([
{ name: 'one', type: Number, multiple: true }
])
const output = new Output(definitions)
a.deepStrictEqual(output.get('one'), undefined)
output.setOptionValue('--one', '2')
a.deepStrictEqual(output.get('one'), [ 2 ])
output.setOptionValue('--one', '3')
a.deepStrictEqual(output.get('one'), [ 2, 3 ])
})
runner.test('output.setValue(value): no defaultOption', function () {
const definitions = new Definitions()
definitions.load([
{ name: 'one', type: Number }
])
const output = new Output(definitions)
a.deepStrictEqual(output.get('one'), undefined)
output.setValue('2')
a.deepStrictEqual(output.get('one'), undefined)
a.deepStrictEqual(output.unknown, [ '2' ])
})
runner.test('output.setValue(value): with defaultOption', function () {
const definitions = new Definitions()
definitions.load([
{ name: 'one', type: Number, defaultOption: true }
])
const output = new Output(definitions)
a.deepStrictEqual(output.get('one'), undefined)
output.setValue('2')
a.deepStrictEqual(output.get('one'), 2)
a.deepStrictEqual(output.unknown, [])
})
runner.test('output.setValue(value): multiple', function () {
const definitions = new Definitions()
definitions.load([
{ name: 'one', multiple: true, defaultOption: true }
])
const output = new Output(definitions)
a.deepStrictEqual(output.get('one'), undefined)
output.setValue('1')
a.deepStrictEqual(output.get('one'), [ '1' ])
output.setValue('2')
a.deepStrictEqual(output.get('one'), [ '1', '2' ])
})