Skip to content

Commit cdfa2cc

Browse files
committed
add tests
1 parent f531d63 commit cdfa2cc

1 file changed

Lines changed: 87 additions & 0 deletions

File tree

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import { describe, expect, it } from 'vitest';
2+
import { parseConsoleCommand } from './parseConsoleCommand';
3+
4+
describe('parseConsoleCommand', () => {
5+
const testCases = [
6+
[
7+
'prop1',
8+
{
9+
steps: [{ type: 'property', value: 'prop1', params: [] }]
10+
}
11+
],
12+
[
13+
'arr1[1]',
14+
{
15+
steps: [{ type: 'array', value: 'arr1', params: [1] }]
16+
}
17+
],
18+
[
19+
`arr1['1']`,
20+
{
21+
steps: [
22+
{ type: 'property', value: 'arr1', params: [] },
23+
{ type: 'property', value: '1', params: [] }
24+
]
25+
}
26+
],
27+
[
28+
`func1(1)`,
29+
{
30+
steps: [{ type: 'function', value: 'func1', params: [1] }]
31+
}
32+
],
33+
[
34+
`func1(1,'2',[3],{"x":4})`,
35+
{
36+
steps: [{ type: 'function', value: 'func1', params: [1, '2', [3], { x: 4 }] }]
37+
}
38+
],
39+
[
40+
`prop1.prop2.prop3`,
41+
{
42+
steps: [
43+
{ type: 'property', value: 'prop1', params: [] },
44+
{ type: 'property', value: 'prop2', params: [] },
45+
{ type: 'property', value: 'prop3', params: [] }
46+
]
47+
}
48+
],
49+
[
50+
'prop1.func1(1,2,3).arr[1].prop2',
51+
{
52+
steps: [
53+
{ type: 'property', value: 'prop1', params: [] },
54+
{ type: 'function', value: 'func1', params: [1, 2, 3] },
55+
{ type: 'array', value: 'arr', params: [1] },
56+
{ type: 'property', value: 'prop2', params: [] }
57+
]
58+
}
59+
],
60+
[
61+
`prop1.func1(1,'2',[3],{"x":4}).arr1[1].prop2`,
62+
{
63+
steps: [
64+
{ type: 'property', value: 'prop1', params: [] },
65+
{ type: 'function', value: 'func1', params: [1, '2', [3], { x: 4 }] },
66+
{ type: 'array', value: 'arr1', params: [1] },
67+
{ type: 'property', value: 'prop2', params: [] }
68+
]
69+
}
70+
],
71+
[
72+
`func1()[1].prop1`,
73+
{
74+
steps: [
75+
{ type: 'function', value: 'func1', params: [] },
76+
{ type: 'property', value: '1', params: [] },
77+
{ type: 'property', value: 'prop1', params: [] }
78+
]
79+
}
80+
]
81+
];
82+
83+
it.each(testCases)(`should parse '%s'`, (commandStr, expected) => {
84+
const result = parseConsoleCommand(commandStr as string);
85+
expect(result).toEqual(expected);
86+
});
87+
});

0 commit comments

Comments
 (0)