-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
84 lines (69 loc) · 2.61 KB
/
Copy pathtest.js
File metadata and controls
84 lines (69 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import assert from 'node:assert';
import {test, describe} from 'node:test';
import nanoparse from './index.js';
describe('nanoparse', () => {
test('parses single flag as true', () => {
const result = nanoparse(['-a']);
assert.deepStrictEqual(result.flags, {a: true});
});
test('parses multiple single flags', () => {
const result = nanoparse(['-a', '-b', '-c']);
assert.deepStrictEqual(result.flags, {a: true, b: true, c: true});
});
test('parses flag with value', () => {
const result = nanoparse(['--name', 'john']);
assert.deepStrictEqual(result.flags, {name: 'john'});
});
test('parses flag with = value', () => {
const result = nanoparse(['--name=john']);
assert.deepStrictEqual(result.flags, {name: 'john'});
});
test('parses short flag with value', () => {
const result = nanoparse(['-n', 'john']);
assert.deepStrictEqual(result.flags, {n: 'john'});
});
test('parses combined short flags', () => {
const result = nanoparse(['-abc']);
assert.deepStrictEqual(result.flags, {a: true, b: true, c: true});
});
test('parses combined short flags with final value', () => {
const result = nanoparse(['-abc', 'value']);
assert.deepStrictEqual(result.flags, {a: true, b: true, c: 'value'});
});
test('parses positional arguments', () => {
const result = nanoparse(['foo', 'bar', 'baz']);
assert.deepStrictEqual(result._, ['foo', 'bar', 'baz']);
});
test('parses extras after --', () => {
const result = nanoparse(['foo', '--', 'bar', 'baz']);
assert.deepStrictEqual(result._, ['foo']);
assert.deepStrictEqual(result.extras, ['bar', 'baz']);
});
test('parses --no- flag as false', () => {
const result = nanoparse(['--no-verbose']);
assert.deepStrictEqual(result.flags, {verbose: false});
});
test('parses number values', () => {
const result = nanoparse(['--count', '42']);
assert.deepStrictEqual(result.flags, {count: 42});
});
test('parses string "true" as boolean', () => {
const result = nanoparse(['--debug', 'true']);
assert.deepStrictEqual(result.flags, {debug: true});
});
test('parses string "false" as boolean', () => {
const result = nanoparse(['--debug', 'false']);
assert.deepStrictEqual(result.flags, {debug: false});
});
test('handles mixed flags and positional args', () => {
const result = nanoparse(['--verbose', 'true', 'input.txt']);
assert.deepStrictEqual(result.flags, {verbose: true});
assert.deepStrictEqual(result._, ['input.txt']);
});
test('handles empty input', () => {
const result = nanoparse([]);
assert.deepStrictEqual(result.flags, {});
assert.deepStrictEqual(result._, []);
assert.deepStrictEqual(result.extras, []);
});
});