@jsprismarine/brigadier 0.2.0-rc.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +57 -39
  2. package/dist/index.js +6 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/CommandDispatcher.js +1 -3
  5. package/dist/lib/CommandDispatcher.js.map +1 -1
  6. package/dist/lib/builder/LiteralArgumentBuilder.js.map +1 -1
  7. package/dist/lib/builder/RequiredArgumentBuilder.js.map +1 -1
  8. package/dist/lib/context/CommandContext.js +4 -4
  9. package/dist/lib/context/CommandContext.js.map +1 -1
  10. package/dist/lib/suggestion/Suggestion.js +1 -1
  11. package/dist/lib/suggestion/Suggestion.js.map +1 -1
  12. package/dist/lib/suggestion/Suggestions.js +1 -1
  13. package/dist/lib/suggestion/Suggestions.js.map +1 -1
  14. package/dist/lib/tree/ArgumentCommandNode.js +1 -1
  15. package/dist/lib/tree/ArgumentCommandNode.js.map +1 -1
  16. package/dist/lib/tree/CommandNode.js +2 -2
  17. package/dist/lib/tree/CommandNode.js.map +1 -1
  18. package/package.json +55 -48
  19. package/.prettierrc +0 -10
  20. package/.renovaterc +0 -3
  21. package/CHANGELOG.md +0 -30
  22. package/dist/index.d.ts +0 -23
  23. package/dist/lib/AmbiguityConsumer.d.ts +0 -4
  24. package/dist/lib/Command.d.ts +0 -4
  25. package/dist/lib/CommandDispatcher.d.ts +0 -29
  26. package/dist/lib/ImmutableStringReader.d.ts +0 -12
  27. package/dist/lib/LiteralMessage.d.ts +0 -7
  28. package/dist/lib/Message.d.ts +0 -3
  29. package/dist/lib/ParseResults.d.ts +0 -13
  30. package/dist/lib/Predicate.d.ts +0 -3
  31. package/dist/lib/RedirectModifier.d.ts +0 -4
  32. package/dist/lib/ResultConsumer.d.ts +0 -4
  33. package/dist/lib/SingleRedirectModifier.d.ts +0 -4
  34. package/dist/lib/StringReader.d.ts +0 -27
  35. package/dist/lib/arguments/ArgumentType.d.ts +0 -21
  36. package/dist/lib/arguments/BoolArgumentType.d.ts +0 -13
  37. package/dist/lib/arguments/FloatArgumentType.d.ts +0 -16
  38. package/dist/lib/arguments/IntegerArgumentType.d.ts +0 -16
  39. package/dist/lib/arguments/StringArgumentType.d.ts +0 -21
  40. package/dist/lib/builder/ArgumentBuilder.d.ts +0 -28
  41. package/dist/lib/builder/LiteralArgumentBuilder.d.ts +0 -11
  42. package/dist/lib/builder/RequiredArgumentBuilder.d.ts +0 -18
  43. package/dist/lib/context/CommandContext.d.ts +0 -33
  44. package/dist/lib/context/CommandContextBuilder.d.ts +0 -38
  45. package/dist/lib/context/ParsedArgument.d.ts +0 -9
  46. package/dist/lib/context/ParsedCommandNode.d.ts +0 -11
  47. package/dist/lib/context/StringRange.d.ts +0 -16
  48. package/dist/lib/context/SuggestionContext.d.ts +0 -6
  49. package/dist/lib/exceptions/BuiltInExceptionProvider.d.ts +0 -23
  50. package/dist/lib/exceptions/BuiltInExceptions.d.ts +0 -43
  51. package/dist/lib/exceptions/CommandExceptionType.d.ts +0 -2
  52. package/dist/lib/exceptions/CommandSyntaxException.d.ts +0 -19
  53. package/dist/lib/exceptions/DynamicCommandExceptionType.d.ts +0 -10
  54. package/dist/lib/exceptions/SimpleCommandExceptionType.d.ts +0 -11
  55. package/dist/lib/suggestion/IntegerSuggestion.d.ts +0 -12
  56. package/dist/lib/suggestion/Suggestion.d.ts +0 -17
  57. package/dist/lib/suggestion/SuggestionProvider.d.ts +0 -6
  58. package/dist/lib/suggestion/Suggestions.d.ts +0 -16
  59. package/dist/lib/suggestion/SuggestionsBuilder.d.ts +0 -18
  60. package/dist/lib/tree/ArgumentCommandNode.d.ts +0 -31
  61. package/dist/lib/tree/CommandNode.d.ts +0 -45
  62. package/dist/lib/tree/LiteralCommandNode.d.ts +0 -27
  63. package/dist/lib/tree/RootCommandNode.d.ts +0 -21
  64. package/dist/lib/util/isEqual.d.ts +0 -1
  65. package/example/fill.js +0 -47
  66. package/example/fill.ts +0 -50
  67. package/src/index.ts +0 -50
  68. package/src/lib/AmbiguityConsumer.ts +0 -6
  69. package/src/lib/Command.ts +0 -5
  70. package/src/lib/CommandDispatcher.ts +0 -480
  71. package/src/lib/ImmutableStringReader.ts +0 -22
  72. package/src/lib/LiteralMessage.ts +0 -17
  73. package/src/lib/Message.ts +0 -3
  74. package/src/lib/ParseResults.ts +0 -32
  75. package/src/lib/Predicate.ts +0 -3
  76. package/src/lib/RedirectModifier.ts +0 -5
  77. package/src/lib/ResultConsumer.ts +0 -6
  78. package/src/lib/SingleRedirectModifier.ts +0 -6
  79. package/src/lib/StringReader.ts +0 -210
  80. package/src/lib/arguments/ArgumentType.ts +0 -28
  81. package/src/lib/arguments/BoolArgumentType.ts +0 -41
  82. package/src/lib/arguments/FloatArgumentType.ts +0 -75
  83. package/src/lib/arguments/IntegerArgumentType.ts +0 -75
  84. package/src/lib/arguments/StringArgumentType.ts +0 -83
  85. package/src/lib/builder/ArgumentBuilder.ts +0 -94
  86. package/src/lib/builder/LiteralArgumentBuilder.ts +0 -35
  87. package/src/lib/builder/RequiredArgumentBuilder.ts +0 -54
  88. package/src/lib/context/CommandContext.ts +0 -118
  89. package/src/lib/context/CommandContextBuilder.ts +0 -155
  90. package/src/lib/context/ParsedArgument.ts +0 -27
  91. package/src/lib/context/ParsedCommandNode.ts +0 -35
  92. package/src/lib/context/StringRange.ts +0 -57
  93. package/src/lib/context/SuggestionContext.ts +0 -12
  94. package/src/lib/exceptions/BuiltInExceptionProvider.ts +0 -43
  95. package/src/lib/exceptions/BuiltInExceptions.ts +0 -121
  96. package/src/lib/exceptions/CommandExceptionType.ts +0 -2
  97. package/src/lib/exceptions/CommandSyntaxException.ts +0 -77
  98. package/src/lib/exceptions/DynamicCommandExceptionType.ts +0 -22
  99. package/src/lib/exceptions/SimpleCommandExceptionType.ts +0 -26
  100. package/src/lib/suggestion/IntegerSuggestion.ts +0 -46
  101. package/src/lib/suggestion/Suggestion.ts +0 -87
  102. package/src/lib/suggestion/SuggestionProvider.ts +0 -7
  103. package/src/lib/suggestion/Suggestions.ts +0 -85
  104. package/src/lib/suggestion/SuggestionsBuilder.ts +0 -69
  105. package/src/lib/tree/ArgumentCommandNode.ts +0 -140
  106. package/src/lib/tree/CommandNode.ts +0 -208
  107. package/src/lib/tree/LiteralCommandNode.ts +0 -111
  108. package/src/lib/tree/RootCommandNode.ts +0 -62
  109. package/src/lib/util/isEqual.ts +0 -75
  110. package/test/CommandDispatcherTest.ts +0 -427
  111. package/test/CommandDispatcherUsagesTest.ts +0 -163
  112. package/test/CommandSuggestionsTest.ts +0 -283
  113. package/test/StringReaderTest.ts +0 -391
  114. package/test/arguments/BoolArgumentTypeTest.ts +0 -18
  115. package/test/arguments/FloatArgumentTypeTest.ts +0 -61
  116. package/test/arguments/IntegerArgumentTypeTest.ts +0 -63
  117. package/test/arguments/StringArgumentTypeTest.ts +0 -61
  118. package/test/benchmarks/ExecuteBenchmark.js +0 -33
  119. package/test/benchmarks/ParsingBenchmark.js +0 -96
  120. package/test/builder/ArgumentBuilderTest.ts +0 -61
  121. package/test/builder/LiteralArgumentBuilderTest.ts +0 -37
  122. package/test/builder/RequiredArgumentBuilderTest.ts +0 -40
  123. package/test/context/CommandContextTest.ts +0 -77
  124. package/test/context/ParsedArgumentTest.ts +0 -19
  125. package/test/exceptions/DynamicCommandSyntaxExceptionTypeTest.ts +0 -18
  126. package/test/exceptions/SimpleCommandSyntaxExceptionTypeTest.ts +0 -33
  127. package/test/suggestion/SuggestionBuilderTest.ts +0 -66
  128. package/test/suggestion/SuggestionTest.ts +0 -65
  129. package/test/suggestion/SuggestionsTest.ts +0 -24
  130. package/test/tree/AbstractCommandNodeTest.ts +0 -57
  131. package/test/tree/ArgumentCommandNodeTest.ts +0 -81
  132. package/test/tree/LiteralCommandNodeTest.ts +0 -112
  133. package/test/tree/RootCommandNodeTest.ts +0 -70
  134. package/test/utils/testEquality.ts +0 -10
  135. package/tsconfig.json +0 -41
  136. package/tsconfig.tsbuildinfo +0 -1585
@@ -1,391 +0,0 @@
1
- import StringReader from "../src/lib/StringReader"
2
- import CommandSyntaxException from "../src/lib/exceptions/CommandSyntaxException"
3
- import { assert } from "chai"
4
-
5
- describe('StringReader Test', () => {
6
-
7
- it('canRead', () => {
8
- const reader = new StringReader("abc");
9
- assert.equal(reader.canRead(), true);
10
- reader.skip();
11
- assert.equal(reader.canRead(), true);
12
- reader.skip();
13
- assert.equal(reader.canRead(), true);
14
- reader.skip();
15
- assert.equal(reader.canRead(), false);
16
-
17
- const reader1 = new StringReader('abc');
18
- assert.equal(reader1.getRemainingLength(), 3);
19
- reader1.setCursor(1);
20
- assert.equal(reader1.getRemainingLength(), 2);
21
- reader1.setCursor(2);
22
- assert.equal(reader1.getRemainingLength(), 1);
23
- reader1.setCursor(3);
24
- assert.equal(reader1.getRemainingLength(), 0);
25
- })
26
-
27
- it('getRemainingLength', () => {
28
- const reader = new StringReader("abc");
29
- assert.equal(reader.getRemainingLength(), 3);
30
- reader.setCursor(1);
31
- assert.equal(reader.getRemainingLength(), 2);
32
- reader.setCursor(2);
33
- assert.equal(reader.getRemainingLength(), 1);
34
- reader.setCursor(3);
35
- assert.equal(reader.getRemainingLength(), 0);
36
- })
37
-
38
- it('peek', () => {
39
- const reader = new StringReader("abc");
40
- assert.equal(reader.peek(), 'a');
41
- assert.equal(reader.getCursor(), 0);
42
- reader.setCursor(2);
43
- assert.equal(reader.peek(), 'c');
44
- assert.equal(reader.getCursor(), 2);
45
-
46
- const reader1 = new StringReader("abc");
47
- assert.equal(reader1.peek(0), 'a');
48
- assert.equal(reader1.peek(2), 'c');
49
- assert.equal(reader1.getCursor(), 0);
50
- reader1.setCursor(1);
51
- assert.equal(reader1.peek(1), 'c');
52
- assert.equal(reader1.getCursor(), 1);
53
- })
54
-
55
- it('read', () => {
56
- const reader = new StringReader("abc");
57
- assert.equal(reader.read(), 'a');
58
- assert.equal(reader.read(), 'b');
59
- assert.equal(reader.read(), 'c');
60
- assert.equal(reader.getCursor(), 3);
61
- })
62
-
63
- it('skip', () => {
64
- const reader = new StringReader("abc");
65
- reader.skip();
66
- assert.equal(reader.getCursor(), 1);
67
- })
68
-
69
- it('getRemaining', () => {
70
- const reader = new StringReader("Hello!");
71
- assert.equal(reader.getRemaining(), "Hello!");
72
- reader.setCursor(3);
73
- assert.equal(reader.getRemaining(), "lo!");
74
- reader.setCursor(6);
75
- assert.equal(reader.getRemaining(), "");
76
- })
77
-
78
- it('getRead', () => {
79
- const reader = new StringReader("Hello!");
80
- assert.equal(reader.getRead(), "");
81
- reader.setCursor(3);
82
- assert.equal(reader.getRead(), "Hel");
83
- reader.setCursor(6);
84
- assert.equal(reader.getRead(), "Hello!");
85
- })
86
-
87
- it('skipWhitespace_none', () => {
88
- const reader = new StringReader("Hello!");
89
- reader.skipWhitespace();
90
- assert.equal(reader.getCursor(), 0);
91
- })
92
-
93
- it('skipWhitespace_mixed', () => {
94
- const reader = new StringReader(" \t \t\nHello!");
95
- reader.skipWhitespace();
96
- assert.equal(reader.getCursor(), 5);
97
- })
98
-
99
- it('skipWhitespace_empty', () => {
100
- const reader = new StringReader("");
101
- reader.skipWhitespace();
102
- assert.equal(reader.getCursor(), 0);
103
- })
104
-
105
- it('readUnquotedString', () => {
106
- const reader = new StringReader("hello world");
107
- assert.equal(reader.readUnquotedString(), "hello");
108
- assert.equal(reader.getRead(), "hello");
109
- assert.equal(reader.getRemaining(), " world");
110
- })
111
-
112
- it('readUnquotedString_empty', () => {
113
- const reader = new StringReader("");
114
- assert.equal(reader.readUnquotedString(), "");
115
- assert.equal(reader.getRead(), "");
116
- assert.equal(reader.getRemaining(), "");
117
- })
118
-
119
- it('readUnquotedString_empty_withRemaining', () => {
120
- const reader = new StringReader(" hello world");
121
- assert.equal(reader.readUnquotedString(), "");
122
- assert.equal(reader.getRead(), "");
123
- assert.equal(reader.getRemaining(), " hello world");
124
- })
125
-
126
- it('readQuotedString', () => {
127
- const reader = new StringReader("\"hello world\"");
128
- assert.equal(reader.readQuotedString(), "hello world");
129
- assert.equal(reader.getRead(), "\"hello world\"");
130
- assert.equal(reader.getRemaining(), "");
131
- })
132
-
133
- it('readQuotedString_empty', () => {
134
- const reader = new StringReader("");
135
- assert.equal(reader.readQuotedString(), "");
136
- assert.equal(reader.getRead(), "");
137
- assert.equal(reader.getRemaining(), "");
138
- })
139
-
140
- it('readQuotedString_emptyQuoted', () => {
141
- const reader = new StringReader("\"\"");
142
- assert.equal(reader.readQuotedString(), "");
143
- assert.equal(reader.getRead(), "\"\"");
144
- assert.equal(reader.getRemaining(), "");
145
- })
146
-
147
- it('readQuotedString_emptyQuoted_withRemaining', () => {
148
- const reader = new StringReader("\"\" hello world");
149
- assert.equal(reader.readQuotedString(), "");
150
- assert.equal(reader.getRead(), "\"\"");
151
- assert.equal(reader.getRemaining(), " hello world");
152
- })
153
-
154
- it('readQuotedString_withEscapedQuote', () => {
155
- const reader = new StringReader("\"hello \\\"world\\\"\"");
156
- assert.equal(reader.readQuotedString(), "hello \"world\"");
157
- assert.equal(reader.getRead(), "\"hello \\\"world\\\"\"");
158
- assert.equal(reader.getRemaining(), "");
159
- })
160
-
161
- it('readQuotedString_withEscapedEscapes', () => {
162
- const reader = new StringReader("\"\\\\o/\"");
163
- assert.equal(reader.readQuotedString(), "\\o/");
164
- assert.equal(reader.getRead(), "\"\\\\o/\"");
165
- assert.equal(reader.getRemaining(), "");
166
- })
167
-
168
- it('readQuotedString_withRemaining', () => {
169
- const reader = new StringReader("\"hello world\" foo bar");
170
- assert.equal(reader.readQuotedString(), "hello world");
171
- assert.equal(reader.getRead(), "\"hello world\"");
172
- assert.equal(reader.getRemaining(), " foo bar");
173
- })
174
-
175
- it('readQuotedString_withImmediateRemaining', () => {
176
- const reader = new StringReader("\"hello world\"foo bar");
177
- assert.equal(reader.readQuotedString(), "hello world");
178
- assert.equal(reader.getRead(), "\"hello world\"");
179
- assert.equal(reader.getRemaining(), "foo bar");
180
- })
181
-
182
- it('readQuotedString_noOpen', () => {
183
- try {
184
- new StringReader("hello world\"").readQuotedString();
185
- assert.fail();
186
- } catch (ex) {
187
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedStartOfQuote());
188
- assert.equal(ex.getCursor(), 0);
189
- }
190
- })
191
-
192
- it('readQuotedString_noClose', () => {
193
- try {
194
- new StringReader("\"hello world").readQuotedString();
195
- assert.fail();
196
- } catch (ex) {
197
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedEndOfQuote());
198
- assert.equal(ex.getCursor(), 12);
199
- }
200
- })
201
-
202
- it('readQuotedString_invalidEscape', () => {
203
- try {
204
- new StringReader("\"hello\\nworld\"").readQuotedString();
205
- assert.fail();
206
- } catch (ex) {
207
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerInvalidEscape());
208
- assert.equal(ex.getCursor(), 7);
209
- }
210
- })
211
-
212
- it('readInt', () => {
213
- const reader = new StringReader("1234567890");
214
- assert.equal(reader.readInt(), 1234567890);
215
- assert.equal(reader.getRead(), "1234567890");
216
- assert.equal(reader.getRemaining(), "");
217
- })
218
-
219
- it('readInt_negative', () => {
220
- const reader = new StringReader("-1234567890");
221
- assert.equal(reader.readInt(), -1234567890);
222
- assert.equal(reader.getRead(), "-1234567890");
223
- assert.equal(reader.getRemaining(), "");
224
- })
225
-
226
- it('readInt_invalid', () => {
227
- try {
228
- new StringReader("12.34").readInt();
229
- assert.fail();
230
- } catch (ex) {
231
- assert.deepEqual(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerInvalidInt());
232
- assert.equal(ex.getCursor(), 0);
233
- }
234
- })
235
-
236
- it('readInt_none', () => {
237
- try {
238
- new StringReader("").readInt();
239
- assert.fail();
240
- } catch (ex) {
241
- assert.deepEqual(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedInt());
242
- assert.equal(ex.getCursor(), 0);
243
- }
244
- })
245
-
246
- it('readInt_withRemaining', () => {
247
- const reader = new StringReader("+1234567890 foo bar");
248
- assert.equal(reader.readInt(), 1234567890);
249
- assert.equal(reader.getRead(), "+1234567890");
250
- assert.equal(reader.getRemaining(), " foo bar");
251
- })
252
-
253
- it('readInt_withRemainingImmediate', () => {
254
- const reader = new StringReader("1234567890foo bar");
255
- assert.equal(reader.readInt(), 1234567890);
256
- assert.equal(reader.getRead(), "1234567890");
257
- assert.equal(reader.getRemaining(), "foo bar");
258
- })
259
-
260
- it('readInt_exponent', () => {
261
- const reader = new StringReader("12e3");
262
- assert.equal(reader.readInt(), 12000);
263
- assert.equal(reader.getRead(), "12e3");
264
- assert.equal(reader.getRemaining(), "");
265
- })
266
-
267
- it('readFloat', () => {
268
- const reader = new StringReader("123");
269
- assert.equal(reader.readFloat(), 123.0);
270
- assert.equal(reader.getRead(), "123");
271
- assert.equal(reader.getRemaining(), "");
272
- })
273
-
274
- it('readFloat_withDecimal', () => {
275
- const reader = new StringReader("12.34");
276
- assert.equal(reader.readFloat(), 12.34);
277
- assert.equal(reader.getRead(), "12.34");
278
- assert.equal(reader.getRemaining(), "");
279
- })
280
-
281
- it('readFloat_negative', () => {
282
- const reader = new StringReader("-123");
283
- assert.equal(reader.readFloat(), -123.0);
284
- assert.equal(reader.getRead(), "-123");
285
- assert.equal(reader.getRemaining(), "");
286
- })
287
-
288
- it('readFloat_invalid', () => {
289
- try {
290
- new StringReader("12.34.56").readFloat();
291
- assert.fail();
292
- } catch (ex) {
293
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerInvalidFloat());
294
- assert.equal(ex.getCursor(), 0);
295
- }
296
- })
297
-
298
- it('readFloat_none', () => {
299
- try {
300
- new StringReader("").readFloat();
301
- assert.fail();
302
- } catch (ex) {
303
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedFloat());
304
- assert.equal(ex.getCursor(), 0);
305
- }
306
- })
307
-
308
- it('readFloat_withRemaining', () => {
309
- const reader = new StringReader("12.34 foo bar");
310
- assert.equal(reader.readFloat(), 12.34);
311
- assert.equal(reader.getRead(), "12.34");
312
- assert.equal(reader.getRemaining(), " foo bar");
313
- })
314
-
315
- it('readFloat_withRemainingImmediate', () => {
316
- const reader = new StringReader("12.34foo bar");
317
- assert.equal(reader.readFloat(), 12.34);
318
- assert.equal(reader.getRead(), "12.34");
319
- assert.equal(reader.getRemaining(), "foo bar");
320
- })
321
-
322
- it('readFloat_exponent', () => {
323
- const reader = new StringReader("1.23E4");
324
- assert.equal(reader.readFloat(), 12300.0);
325
- assert.equal(reader.getRead(), "1.23E4");
326
- assert.equal(reader.getRemaining(), "");
327
- })
328
-
329
- it('readFloat_negativeExponent', () => {
330
- const reader = new StringReader("1.23E-4");
331
- assert.equal(reader.readFloat(), 0.000123);
332
- assert.equal(reader.getRead(), "1.23E-4");
333
- assert.equal(reader.getRemaining(), "");
334
- })
335
-
336
- it('expect_correct', () => {
337
- const reader = new StringReader("abc");
338
- reader.expect('a');
339
- assert.equal(reader.getCursor(), 1);
340
- })
341
-
342
- it('expect_incorrect', () => {
343
- const reader = new StringReader("bcd");
344
- try {
345
- reader.expect('a');
346
- assert.fail();
347
- } catch (ex) {
348
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedSymbol());
349
- assert.equal(ex.getCursor(), 0);
350
- }
351
- })
352
-
353
- it('expect_none', () => {
354
- const reader = new StringReader("");
355
- try {
356
- reader.expect('a');
357
- assert.fail();
358
- } catch (ex) {
359
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedSymbol());
360
- assert.equal(ex.getCursor(), 0);
361
- }
362
- })
363
-
364
- it('readBoolean_correct', () => {
365
- const reader = new StringReader("true");
366
- assert.equal(reader.readBoolean(), true);
367
- assert.equal(reader.getRead(), "true");
368
- })
369
-
370
- it('readBoolean_incorrect', () => {
371
- const reader = new StringReader("tuesday");
372
- try {
373
- reader.readBoolean();
374
- assert.fail();
375
- } catch (ex) {
376
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerInvalidBool());
377
- assert.equal(ex.getCursor(), 0);
378
- }
379
- })
380
-
381
- it('readBoolean_none', () => {
382
- const reader = new StringReader("");
383
- try {
384
- reader.readBoolean();
385
- assert.fail()
386
- } catch (ex) {
387
- assert.equal(ex.getType(), CommandSyntaxException.BUILT_IN_EXCEPTIONS.readerExpectedBool());
388
- assert.equal(ex.getCursor(), 0);
389
- }
390
- })
391
- })
@@ -1,18 +0,0 @@
1
- import { assert } from 'chai'
2
- import { mock, instance, when, verify } from 'ts-mockito'
3
- import { DefaultType } from "../../src/lib/arguments/ArgumentType"
4
- import StringReader from "../../src/lib/StringReader"
5
-
6
- describe('BoolArgumentTypeTest', () => {
7
- const type = DefaultType.bool();
8
-
9
- it('parse', () => {
10
- const mockedReader = mock(StringReader);
11
- when(mockedReader.readBoolean()).thenReturn(true);
12
-
13
- const reader = instance(mockedReader);
14
- assert.equal(type.parse(reader), true);
15
-
16
- verify(mockedReader.readBoolean()).once();
17
- })
18
- })
@@ -1,61 +0,0 @@
1
- import { assert, expect } from 'chai'
2
- import testEquality from "../utils/testEquality"
3
- import CommandSyntaxException from "../../src/lib/exceptions/CommandSyntaxException"
4
- import { DefaultType } from "../../src/lib/arguments/ArgumentType"
5
- import StringReader from '../../src/lib/StringReader';
6
-
7
- const {float} = DefaultType;
8
-
9
- describe('floatumentTypeTest', () => {
10
- let type;
11
-
12
- beforeEach(() => {
13
- type = float(-100, 100);
14
- })
15
-
16
- it('parse', () => {
17
- const reader = new StringReader("15");
18
- assert.equal(float().parse(reader), 15);
19
- assert.equal(reader.canRead(), false);
20
- })
21
-
22
- it('parse_tooSmall', done => {
23
- const reader = new StringReader("-5");
24
- try {
25
- float(0, 100).parse(reader);
26
- } catch (ex) {
27
- expect(ex.getType().toString()).to.equal(CommandSyntaxException.BUILT_IN_EXCEPTIONS.floatTooLow().toString());
28
- assert.equal(ex.getCursor(), 0);
29
- done();
30
- return;
31
- }
32
- assert.fail();
33
- })
34
-
35
- it('parse_tooBig', done => {
36
- const reader = new StringReader("5");
37
- try {
38
- float(-100, 0).parse(reader);
39
- } catch (ex) {
40
- expect(ex.getType().toString()).to.equal(CommandSyntaxException.BUILT_IN_EXCEPTIONS.floatTooHigh().toString());
41
- assert.equal(ex.getCursor(), 0);
42
- done();
43
- return;
44
- }
45
- assert.fail();
46
- })
47
-
48
- it('testEquals', () => {
49
- testEquality(float(), float())
50
- testEquality(float(-100, 100), float(-100, 100))
51
- testEquality(float(-100, 50), float(-100, 50))
52
- testEquality(float(-50, 100), float(-50, 100))
53
- })
54
-
55
- it('testToString', () => {
56
- assert.equal(float()+ "", "float()");
57
- assert.equal(float(-100)+ "", "float(-100)");
58
- assert.equal(float(-100, 100)+ "", "float(-100, 100)");
59
- assert.equal(float(Number.MIN_SAFE_INTEGER, 100)+ "", "float(-9007199254740991, 100)");
60
- })
61
- })
@@ -1,63 +0,0 @@
1
- import { assert, expect } from 'chai'
2
- import testEquality from "../utils/testEquality"
3
- import CommandSyntaxException from "../../src/lib/exceptions/CommandSyntaxException"
4
- import { DefaultType } from "../../src/lib/arguments/ArgumentType"
5
- import StringReader from '../../src/lib/StringReader';
6
-
7
- const { integer } = DefaultType;
8
-
9
- describe('integerumentTypeTest', () => {
10
- let type;
11
-
12
- beforeEach(() => {
13
- type = integer(-100, 100);
14
- })
15
-
16
- it('parse', () => {
17
- const reader = new StringReader("15");
18
- assert.equal(integer().parse(reader), 15);
19
- assert.equal(reader.canRead(), false);
20
- })
21
-
22
- it('parse_tooSmall', done => {
23
- const reader = new StringReader("-5");
24
- try {
25
- integer(0, 100).parse(reader);
26
- } catch (ex) {
27
- expect(ex.getType().toString()).to.equal(CommandSyntaxException.BUILT_IN_EXCEPTIONS.integerTooLow().toString());
28
- assert.equal(ex.getCursor(), 0);
29
- done();
30
- return;
31
- }
32
-
33
- assert.fail();
34
- })
35
-
36
- it('parse_tooBig', done => {
37
- const reader = new StringReader("5");
38
- try {
39
- integer(-100, 0).parse(reader);
40
- } catch (ex) {
41
- expect(ex.getType().toString()).to.equal(CommandSyntaxException.BUILT_IN_EXCEPTIONS.integerTooHigh().toString());
42
- assert.equal(ex.getCursor(), 0);
43
- done();
44
- return;
45
- }
46
-
47
- assert.fail();
48
- })
49
-
50
- it('testEquals', () => {
51
- testEquality(integer(), integer())
52
- testEquality(integer(-100, 100), integer(-100, 100))
53
- testEquality(integer(-100, 50), integer(-100, 50))
54
- testEquality(integer(-50, 100), integer(-50, 100))
55
- })
56
-
57
- it('testToString', () => {
58
- assert.equal(integer()+ "", "integer()");
59
- assert.equal(integer(-100)+ "", "integer(-100)");
60
- assert.equal(integer(-100, 100)+ "", "integer(-100, 100)");
61
- assert.equal(integer(Number.MIN_SAFE_INTEGER, 100)+ "", "integer(-9007199254740991, 100)");
62
- })
63
- })
@@ -1,61 +0,0 @@
1
- import { assert } from 'chai'
2
- import { mock, instance, when, verify, anything } from 'ts-mockito'
3
- import { DefaultType } from "../../src/lib/arguments/ArgumentType"
4
- import StringReader from '../../src/lib/StringReader';
5
- import StringArgumentType from "../../src/lib/arguments/StringArgumentType"
6
-
7
- const { word, string, greedyString } = DefaultType
8
- const { escapeIfRequired } = StringArgumentType
9
-
10
- describe('StringArgumentTypeTest', () => {
11
-
12
- it('testParseWord', () => {
13
- const mockedReader = mock(StringReader);
14
- when(mockedReader.readUnquotedString()).thenReturn("hello");
15
- const reader = instance(mockedReader)
16
-
17
- assert.equal(word().parse(reader), "hello");
18
-
19
- verify(mockedReader.readUnquotedString()).called();
20
- })
21
-
22
- it('testParseString', () => {
23
- const mockedReader = mock(StringReader);
24
- when(mockedReader.readString()).thenReturn("hello world");
25
- const reader = instance(mockedReader)
26
-
27
- assert.equal(string().parse(reader), "hello world");
28
- verify(mockedReader.readString()).called();
29
- })
30
-
31
- it('testParseGreedyString', () => {
32
- const reader = new StringReader("Hello world! This is a test.");
33
- assert.equal(greedyString().parse(reader), "Hello world! This is a test.");
34
- assert.equal(reader.canRead(), false);
35
- })
36
-
37
- it('testToString', () => {
38
- assert.equal(string() + "", "string()");
39
- })
40
-
41
- it('testEscapeIfRequired_notRequired', () => {
42
- assert.equal(escapeIfRequired("hello"), "hello");
43
- assert.equal(escapeIfRequired(""), "");
44
- })
45
-
46
- it('testEscapeIfRequired_multipleWords', () => {
47
- assert.equal(escapeIfRequired("hello world"), "\"hello world\"");
48
- })
49
-
50
- it('testEscapeIfRequired_quote', () => {
51
- assert.equal(escapeIfRequired("hello \"world\"!"), "\"hello \\\"world\\\"!\"");
52
- })
53
-
54
- it('testEscapeIfRequired_escapes', () => {
55
- assert.equal(escapeIfRequired("\\"), "\"\\\\\"");
56
- })
57
-
58
- it('testEscapeIfRequired_singleQuote', () => {
59
- assert.equal(escapeIfRequired("\""), "\"\\\"\"");
60
- })
61
- })
@@ -1,33 +0,0 @@
1
- let output = ""
2
- const outputStream = {write(content) { output = content; console.log(content) }}
3
-
4
- const { literal, CommandDispatcher } = require("../../dist")
5
-
6
- const dispatcher = new CommandDispatcher();
7
- dispatcher.register(literal("command").executes(() => 0));
8
- dispatcher.register(literal("redirect").redirect(dispatcher.getRoot()));
9
- dispatcher.register(literal("fork").fork(dispatcher.getRoot(), () => [{}, {}, {}]));
10
- const simple = dispatcher.parse("command", new Object());
11
- const singleRedirect = dispatcher.parse("redirect command", new Object());
12
- const forkedRedirect = dispatcher.parse("fork command", new Object());
13
-
14
- bench(
15
- [
16
- {
17
- label: "execute simple",
18
- fn() { dispatcher.execute(simple) }
19
- },
20
- {
21
- label: "execute single redirect",
22
- fn() { dispatcher.execute(singleRedirect) }
23
- },
24
- {
25
- label: "execute forked redirect",
26
- fn() { dispatcher.execute(forkedRedirect) }
27
- },
28
- ],
29
- { stream: outputStream, runs: 1000 }
30
- )
31
-
32
- const d = new Date();
33
- require('fs').writeFileSync(`./benchmark/execute-${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}-${d.getHours()}-${d.getMinutes()}.txt`, output.replace(/\[1m/g, '').replace(/\[0m/g, ''))