@jsprismarine/brigadier 0.1.0 → 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 (210) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +57 -39
  3. package/dist/index.js +6 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/AmbiguityConsumer.js +0 -0
  6. package/dist/lib/AmbiguityConsumer.js.map +0 -0
  7. package/dist/lib/Command.js +0 -0
  8. package/dist/lib/Command.js.map +0 -0
  9. package/dist/lib/CommandDispatcher.js +45 -28
  10. package/dist/lib/CommandDispatcher.js.map +1 -1
  11. package/dist/lib/ImmutableStringReader.js +0 -0
  12. package/dist/lib/ImmutableStringReader.js.map +0 -0
  13. package/dist/lib/LiteralMessage.js +0 -0
  14. package/dist/lib/LiteralMessage.js.map +0 -0
  15. package/dist/lib/Message.js +0 -0
  16. package/dist/lib/Message.js.map +0 -0
  17. package/dist/lib/ParseResults.js +0 -0
  18. package/dist/lib/ParseResults.js.map +0 -0
  19. package/dist/lib/Predicate.js +0 -0
  20. package/dist/lib/Predicate.js.map +0 -0
  21. package/dist/lib/RedirectModifier.js +0 -0
  22. package/dist/lib/RedirectModifier.js.map +0 -0
  23. package/dist/lib/ResultConsumer.js +0 -0
  24. package/dist/lib/ResultConsumer.js.map +0 -0
  25. package/dist/lib/SingleRedirectModifier.js +0 -0
  26. package/dist/lib/SingleRedirectModifier.js.map +0 -0
  27. package/dist/lib/StringReader.js +0 -0
  28. package/dist/lib/StringReader.js.map +0 -0
  29. package/dist/lib/arguments/ArgumentType.js +1 -1
  30. package/dist/lib/arguments/ArgumentType.js.map +1 -1
  31. package/dist/lib/arguments/BoolArgumentType.js +0 -0
  32. package/dist/lib/arguments/BoolArgumentType.js.map +0 -0
  33. package/dist/lib/arguments/FloatArgumentType.js +0 -0
  34. package/dist/lib/arguments/FloatArgumentType.js.map +0 -0
  35. package/dist/lib/arguments/IntegerArgumentType.js +0 -0
  36. package/dist/lib/arguments/IntegerArgumentType.js.map +0 -0
  37. package/dist/lib/arguments/StringArgumentType.js +0 -0
  38. package/dist/lib/arguments/StringArgumentType.js.map +0 -0
  39. package/dist/lib/builder/ArgumentBuilder.js +0 -0
  40. package/dist/lib/builder/ArgumentBuilder.js.map +0 -0
  41. package/dist/lib/builder/LiteralArgumentBuilder.js +0 -0
  42. package/dist/lib/builder/LiteralArgumentBuilder.js.map +1 -1
  43. package/dist/lib/builder/RequiredArgumentBuilder.js +0 -0
  44. package/dist/lib/builder/RequiredArgumentBuilder.js.map +1 -1
  45. package/dist/lib/context/CommandContext.js +4 -4
  46. package/dist/lib/context/CommandContext.js.map +1 -1
  47. package/dist/lib/context/CommandContextBuilder.js +0 -0
  48. package/dist/lib/context/CommandContextBuilder.js.map +0 -0
  49. package/dist/lib/context/ParsedArgument.js +0 -0
  50. package/dist/lib/context/ParsedArgument.js.map +0 -0
  51. package/dist/lib/context/ParsedCommandNode.js +0 -0
  52. package/dist/lib/context/ParsedCommandNode.js.map +0 -0
  53. package/dist/lib/context/StringRange.js +0 -0
  54. package/dist/lib/context/StringRange.js.map +0 -0
  55. package/dist/lib/context/SuggestionContext.js +0 -0
  56. package/dist/lib/context/SuggestionContext.js.map +0 -0
  57. package/dist/lib/exceptions/BuiltInExceptionProvider.js +0 -0
  58. package/dist/lib/exceptions/BuiltInExceptionProvider.js.map +0 -0
  59. package/dist/lib/exceptions/BuiltInExceptions.js +0 -0
  60. package/dist/lib/exceptions/BuiltInExceptions.js.map +0 -0
  61. package/dist/lib/exceptions/CommandExceptionType.js +0 -0
  62. package/dist/lib/exceptions/CommandExceptionType.js.map +0 -0
  63. package/dist/lib/exceptions/CommandSyntaxException.js +0 -0
  64. package/dist/lib/exceptions/CommandSyntaxException.js.map +0 -0
  65. package/dist/lib/exceptions/DynamicCommandExceptionType.js +0 -0
  66. package/dist/lib/exceptions/DynamicCommandExceptionType.js.map +0 -0
  67. package/dist/lib/exceptions/SimpleCommandExceptionType.js +0 -0
  68. package/dist/lib/exceptions/SimpleCommandExceptionType.js.map +0 -0
  69. package/dist/lib/suggestion/IntegerSuggestion.js +0 -0
  70. package/dist/lib/suggestion/IntegerSuggestion.js.map +0 -0
  71. package/dist/lib/suggestion/Suggestion.js +1 -1
  72. package/dist/lib/suggestion/Suggestion.js.map +1 -1
  73. package/dist/lib/suggestion/SuggestionProvider.js +0 -0
  74. package/dist/lib/suggestion/SuggestionProvider.js.map +0 -0
  75. package/dist/lib/suggestion/Suggestions.js +1 -1
  76. package/dist/lib/suggestion/Suggestions.js.map +1 -1
  77. package/dist/lib/suggestion/SuggestionsBuilder.js +0 -0
  78. package/dist/lib/suggestion/SuggestionsBuilder.js.map +0 -0
  79. package/dist/lib/tree/ArgumentCommandNode.js +17 -16
  80. package/dist/lib/tree/ArgumentCommandNode.js.map +1 -1
  81. package/dist/lib/tree/CommandNode.js +14 -13
  82. package/dist/lib/tree/CommandNode.js.map +1 -1
  83. package/dist/lib/tree/LiteralCommandNode.js +0 -0
  84. package/dist/lib/tree/LiteralCommandNode.js.map +0 -0
  85. package/dist/lib/tree/RootCommandNode.js +0 -0
  86. package/dist/lib/tree/RootCommandNode.js.map +0 -0
  87. package/dist/lib/util/isEqual.js +0 -0
  88. package/dist/lib/util/isEqual.js.map +0 -0
  89. package/index.js +0 -0
  90. package/package.json +55 -48
  91. package/.prettierrc +0 -10
  92. package/.renovaterc +0 -3
  93. package/CHANGELOG.md +0 -30
  94. package/dist/index.d.ts +0 -23
  95. package/dist/lib/AmbiguityConsumer.d.ts +0 -4
  96. package/dist/lib/Command.d.ts +0 -4
  97. package/dist/lib/CommandDispatcher.d.ts +0 -29
  98. package/dist/lib/ImmutableStringReader.d.ts +0 -12
  99. package/dist/lib/LiteralMessage.d.ts +0 -7
  100. package/dist/lib/Message.d.ts +0 -3
  101. package/dist/lib/ParseResults.d.ts +0 -13
  102. package/dist/lib/Predicate.d.ts +0 -3
  103. package/dist/lib/Primitive.js +0 -2
  104. package/dist/lib/RedirectModifier.d.ts +0 -4
  105. package/dist/lib/ResultConsumer.d.ts +0 -4
  106. package/dist/lib/SingleRedirectModifier.d.ts +0 -4
  107. package/dist/lib/StringReader.d.ts +0 -27
  108. package/dist/lib/arguments/ArgumentType.d.ts +0 -21
  109. package/dist/lib/arguments/BoolArgumentType.d.ts +0 -13
  110. package/dist/lib/arguments/FloatArgumentType.d.ts +0 -16
  111. package/dist/lib/arguments/IntegerArgumentType.d.ts +0 -16
  112. package/dist/lib/arguments/StringArgumentType.d.ts +0 -21
  113. package/dist/lib/builder/ArgumentBuilder.d.ts +0 -28
  114. package/dist/lib/builder/LiteralArgumentBuilder.d.ts +0 -11
  115. package/dist/lib/builder/RequiredArgumentBuilder.d.ts +0 -18
  116. package/dist/lib/context/CommandContext.d.ts +0 -33
  117. package/dist/lib/context/CommandContextBuilder.d.ts +0 -38
  118. package/dist/lib/context/ParsedArgument.d.ts +0 -9
  119. package/dist/lib/context/ParsedCommandNode.d.ts +0 -11
  120. package/dist/lib/context/StringRange.d.ts +0 -16
  121. package/dist/lib/context/SuggestionContext.d.ts +0 -6
  122. package/dist/lib/exceptions/BuiltInExceptionProvider.d.ts +0 -23
  123. package/dist/lib/exceptions/BuiltInExceptions.d.ts +0 -43
  124. package/dist/lib/exceptions/CommandExceptionType.d.ts +0 -2
  125. package/dist/lib/exceptions/CommandSyntaxException.d.ts +0 -19
  126. package/dist/lib/exceptions/Dynamic2CommandExceptionType.js +0 -19
  127. package/dist/lib/exceptions/DynamicCommandExceptionType.d.ts +0 -10
  128. package/dist/lib/exceptions/SimpleCommandExceptionType.d.ts +0 -11
  129. package/dist/lib/suggestion/IntegerSuggestion.d.ts +0 -12
  130. package/dist/lib/suggestion/Suggestion.d.ts +0 -17
  131. package/dist/lib/suggestion/SuggestionProvider.d.ts +0 -6
  132. package/dist/lib/suggestion/Suggestions.d.ts +0 -16
  133. package/dist/lib/suggestion/SuggestionsBuilder.d.ts +0 -18
  134. package/dist/lib/tree/ArgumentCommandNode.d.ts +0 -31
  135. package/dist/lib/tree/CommandNode.d.ts +0 -45
  136. package/dist/lib/tree/LiteralCommandNode.d.ts +0 -27
  137. package/dist/lib/tree/RootCommandNode.d.ts +0 -21
  138. package/dist/lib/util/isEqual.d.ts +0 -1
  139. package/example/fill.js +0 -47
  140. package/example/fill.ts +0 -50
  141. package/src/index.ts +0 -50
  142. package/src/lib/AmbiguityConsumer.ts +0 -6
  143. package/src/lib/Command.ts +0 -5
  144. package/src/lib/CommandDispatcher.ts +0 -390
  145. package/src/lib/ImmutableStringReader.ts +0 -22
  146. package/src/lib/LiteralMessage.ts +0 -17
  147. package/src/lib/Message.ts +0 -3
  148. package/src/lib/ParseResults.ts +0 -32
  149. package/src/lib/Predicate.ts +0 -3
  150. package/src/lib/RedirectModifier.ts +0 -5
  151. package/src/lib/ResultConsumer.ts +0 -6
  152. package/src/lib/SingleRedirectModifier.ts +0 -6
  153. package/src/lib/StringReader.ts +0 -210
  154. package/src/lib/arguments/ArgumentType.ts +0 -27
  155. package/src/lib/arguments/BoolArgumentType.ts +0 -41
  156. package/src/lib/arguments/FloatArgumentType.ts +0 -75
  157. package/src/lib/arguments/IntegerArgumentType.ts +0 -75
  158. package/src/lib/arguments/StringArgumentType.ts +0 -83
  159. package/src/lib/builder/ArgumentBuilder.ts +0 -94
  160. package/src/lib/builder/LiteralArgumentBuilder.ts +0 -35
  161. package/src/lib/builder/RequiredArgumentBuilder.ts +0 -54
  162. package/src/lib/context/CommandContext.ts +0 -118
  163. package/src/lib/context/CommandContextBuilder.ts +0 -155
  164. package/src/lib/context/ParsedArgument.ts +0 -27
  165. package/src/lib/context/ParsedCommandNode.ts +0 -35
  166. package/src/lib/context/StringRange.ts +0 -57
  167. package/src/lib/context/SuggestionContext.ts +0 -12
  168. package/src/lib/exceptions/BuiltInExceptionProvider.ts +0 -43
  169. package/src/lib/exceptions/BuiltInExceptions.ts +0 -121
  170. package/src/lib/exceptions/CommandExceptionType.ts +0 -2
  171. package/src/lib/exceptions/CommandSyntaxException.ts +0 -77
  172. package/src/lib/exceptions/DynamicCommandExceptionType.ts +0 -22
  173. package/src/lib/exceptions/SimpleCommandExceptionType.ts +0 -26
  174. package/src/lib/suggestion/IntegerSuggestion.ts +0 -46
  175. package/src/lib/suggestion/Suggestion.ts +0 -87
  176. package/src/lib/suggestion/SuggestionProvider.ts +0 -7
  177. package/src/lib/suggestion/Suggestions.ts +0 -85
  178. package/src/lib/suggestion/SuggestionsBuilder.ts +0 -69
  179. package/src/lib/tree/ArgumentCommandNode.ts +0 -118
  180. package/src/lib/tree/CommandNode.ts +0 -200
  181. package/src/lib/tree/LiteralCommandNode.ts +0 -111
  182. package/src/lib/tree/RootCommandNode.ts +0 -62
  183. package/src/lib/util/isEqual.ts +0 -75
  184. package/test/CommandDispatcherTest.ts +0 -427
  185. package/test/CommandDispatcherUsagesTest.ts +0 -163
  186. package/test/CommandSuggestionsTest.ts +0 -283
  187. package/test/StringReaderTest.ts +0 -391
  188. package/test/arguments/BoolArgumentTypeTest.ts +0 -18
  189. package/test/arguments/FloatArgumentTypeTest.ts +0 -61
  190. package/test/arguments/IntegerArgumentTypeTest.ts +0 -63
  191. package/test/arguments/StringArgumentTypeTest.ts +0 -61
  192. package/test/benchmarks/ExecuteBenchmark.js +0 -33
  193. package/test/benchmarks/ParsingBenchmark.js +0 -96
  194. package/test/builder/ArgumentBuilderTest.ts +0 -61
  195. package/test/builder/LiteralArgumentBuilderTest.ts +0 -37
  196. package/test/builder/RequiredArgumentBuilderTest.ts +0 -40
  197. package/test/context/CommandContextTest.ts +0 -77
  198. package/test/context/ParsedArgumentTest.ts +0 -19
  199. package/test/exceptions/DynamicCommandSyntaxExceptionTypeTest.ts +0 -18
  200. package/test/exceptions/SimpleCommandSyntaxExceptionTypeTest.ts +0 -33
  201. package/test/suggestion/SuggestionBuilderTest.ts +0 -66
  202. package/test/suggestion/SuggestionTest.ts +0 -65
  203. package/test/suggestion/SuggestionsTest.ts +0 -24
  204. package/test/tree/AbstractCommandNodeTest.ts +0 -57
  205. package/test/tree/ArgumentCommandNodeTest.ts +0 -81
  206. package/test/tree/LiteralCommandNodeTest.ts +0 -112
  207. package/test/tree/RootCommandNodeTest.ts +0 -70
  208. package/test/utils/testEquality.ts +0 -10
  209. package/tsconfig.json +0 -40
  210. package/tsconfig.tsbuildinfo +0 -1578
@@ -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, ''))