'use strict' const TestRunner = require('test-runner') const commandLineArgs = require('../') const a = require('assert') const runner = new TestRunner() runner.test('default value', function () { const defs = [ { name: 'one' }, { name: 'two', defaultValue: 'two' } ] const argv = [ '--one', '1' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { one: '1', two: 'two' }) }) runner.test('default value 2', function () { const defs = [ { name: 'two', defaultValue: 'two' } ] const argv = [] a.deepStrictEqual(commandLineArgs(defs, { argv }), { two: 'two' }) }) runner.test('default value 3', function () { const defs = [ { name: 'two', defaultValue: 'two' } ] const argv = [ '--two', 'zwei' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { two: 'zwei' }) }) runner.test('default value 4', function () { const defs = [ { name: 'two', multiple: true, defaultValue: [ 'two', 'zwei' ] } ] const argv = [ '--two', 'duo' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { two: [ 'duo' ] }) }) runner.test('default value 5', function () { const defs = [ { name: 'two', multiple: true, defaultValue: ['two', 'zwei'] } ] const argv = [] const result = commandLineArgs(defs, { argv }) a.deepStrictEqual(result, { two: [ 'two', 'zwei' ] }) }) runner.test('default value: array as defaultOption', function () { const defs = [ { name: 'two', multiple: true, defaultValue: ['two', 'zwei'], defaultOption: true } ] const argv = [ 'duo' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { two: [ 'duo' ] }) }) runner.test('default value: falsy default values', function () { const defs = [ { name: 'one', defaultValue: 0 }, { name: 'two', defaultValue: false } ] const argv = [] a.deepStrictEqual(commandLineArgs(defs, { argv }), { one: 0, two: false }) }) runner.test('default value: is arrayifed if multiple set', function () { const defs = [ { name: 'one', defaultValue: 0, multiple: true } ] let argv = [] a.deepStrictEqual(commandLineArgs(defs, { argv }), { one: [ 0 ] }) argv = [ '--one', '2' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { one: [ '2' ] }) }) runner.test('default value: combined with defaultOption', function () { const defs = [ { name: 'path', defaultOption: true, defaultValue: './' } ] let argv = [ '--path', 'test' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: 'test' }) argv = [ 'test' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: 'test' }) argv = [ ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: './' }) }) runner.test('default value: combined with multiple and defaultOption', function () { const defs = [ { name: 'path', multiple: true, defaultOption: true, defaultValue: './' } ] let argv = [ '--path', 'test1', 'test2' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test1', 'test2' ] }) argv = [ '--path', 'test' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test' ] }) argv = [ 'test1', 'test2' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test1', 'test2' ] }) argv = [ 'test' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test' ] }) argv = [ ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ './' ] }) }) runner.test('default value: array default combined with multiple and defaultOption', function () { const defs = [ { name: 'path', multiple: true, defaultOption: true, defaultValue: [ './' ] } ] let argv = [ '--path', 'test1', 'test2' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test1', 'test2' ] }) argv = [ '--path', 'test' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test' ] }) argv = [ 'test1', 'test2' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test1', 'test2' ] }) argv = [ 'test' ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ 'test' ] }) argv = [ ] a.deepStrictEqual(commandLineArgs(defs, { argv }), { path: [ './' ] }) })