diff options
| author | Elizabeth Hunt <me@liz.coffee> | 2025-12-14 22:39:18 -0800 |
|---|---|---|
| committer | Elizabeth Hunt <me@liz.coffee> | 2025-12-14 22:39:18 -0800 |
| commit | 666674327f009e9b1013218fc384f193b64c6997 (patch) | |
| tree | acebae7b425b469584eb0a5bec396899c2739501 /tst/argv.test.ts | |
| parent | 594ce452693a71b501d3aff3f35ef3732c06c341 (diff) | |
| download | pengueno-666674327f009e9b1013218fc384f193b64c6997.tar.gz pengueno-666674327f009e9b1013218fc384f193b64c6997.zip | |
Adds unit tests
Diffstat (limited to 'tst/argv.test.ts')
| -rw-r--r-- | tst/argv.test.ts | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tst/argv.test.ts b/tst/argv.test.ts new file mode 100644 index 0000000..1eae059 --- /dev/null +++ b/tst/argv.test.ts @@ -0,0 +1,55 @@ +import { argv, getArg, isArgKey } from '../lib/index'; + +describe('process/argv', () => { + test('isArgKey detects keys', () => { + expect(isArgKey('--foo')).toBe(true); + expect(isArgKey('foo')).toBe(false); + expect(isArgKey('-f')).toBe(false); + }); + + test('getArg returns absent default when missing', () => { + const res = getArg('--foo', ['--bar', 'x'], { absent: 'nope', present: (v: string) => v }); + expect(res.right().get()).toBe('nope'); + }); + + test('getArg errors when missing and no absent default', () => { + const res = getArg('--foo', ['--bar', 'x'], { present: (v: string) => v }); + expect(res.left().get().message).toMatch(/arg --foo is not present/); + }); + + test('getArg reads value from equals form', () => { + const res = getArg('--foo', ['--foo=bar'], { present: (v: string) => v }); + expect(res.right().get()).toBe('bar'); + }); + + test('getArg reads value from next token form', () => { + const res = getArg('--foo', ['--foo', 'bar'], { present: (v: string) => v }); + expect(res.right().get()).toBe('bar'); + }); + + test('getArg uses unspecified when value missing', () => { + const res = getArg('--foo', ['--foo', '--bar', 'x'], { + unspecified: 'default', + present: (v: string) => v, + }); + expect(res.right().get()).toBe('default'); + }); + + test('argv maps multiple args with handlers', () => { + const res = argv( + ['--port', '--host'] as const, + { + '--port': { + present: (v: string) => parseInt(v, 10), + }, + '--host': { + absent: '127.0.0.1', + present: (v: string) => v, + }, + }, + ['--port', '8080'], + ); + + expect(res.right().get()).toEqual({ '--port': 8080, '--host': '127.0.0.1' }); + }); +}); |
