Skip to content

Commit 84bf3be

Browse files
committed
add tests to evaluator and lexer.
1 parent 79c2f7a commit 84bf3be

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ mi_mapa["a"] // return 1
7272
var i = 0;
7373
mientras(i <= 5) {
7474
escribir("hola mundo");
75-
i += 1;
75+
i++
7676
}
7777
```
7878

tests/evaluator_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,22 @@ func (e *EvaluatorTests) TestCallList() {
327327
}
328328
}
329329

330+
func (e *EvaluatorTests) TestOperators() {
331+
tests := []tuple{
332+
{"var a = 10; a++; a;", 11},
333+
{"var a = 10; a+=1; a;", 11},
334+
{"var a = 10; a--; a;", 9},
335+
{"var a = 10; a-=1; a;", 9},
336+
{"var a = 10; a/=2; a;", 5},
337+
{"var a = 10; a*=2; a;", 20},
338+
}
339+
340+
for _, test := range tests {
341+
evaluated := e.evaluateTests(test.source)
342+
e.testIntegerObject(evaluated, test.expected)
343+
}
344+
}
345+
330346
func (e *EvaluatorTests) TestBuiltinFunctions() {
331347
tests := []struct {
332348
source string

tests/lexer_test.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,15 @@ func (l *LexerTests) TestTwoCharacterOperator() {
193193
10 <= 9;
194194
10 || 9;
195195
10 && 9;
196+
10++;
197+
10 += 1;
198+
10--;
199+
10 -= 1;
200+
10 *= 2;
201+
10 /= 2;
196202
`
197203

198-
tokens := l.loadTokens(24, source)
204+
tokens := l.loadTokens(46, source)
199205

200206
expectedTokens := []src.Token{
201207
{Token_type: src.INT, Literal: "10"},
@@ -222,6 +228,28 @@ func (l *LexerTests) TestTwoCharacterOperator() {
222228
{Token_type: src.AND, Literal: "&&"},
223229
{Token_type: src.INT, Literal: "9"},
224230
{Token_type: src.SEMICOLON, Literal: ";"},
231+
{Token_type: src.INT, Literal: "10"},
232+
{Token_type: src.PLUS2, Literal: "++"},
233+
{Token_type: src.SEMICOLON, Literal: ";"},
234+
{Token_type: src.INT, Literal: "10"},
235+
{Token_type: src.PLUSASSING, Literal: "+="},
236+
{Token_type: src.INT, Literal: "1"},
237+
{Token_type: src.SEMICOLON, Literal: ";"},
238+
{Token_type: src.INT, Literal: "10"},
239+
{Token_type: src.MINUS2, Literal: "--"},
240+
{Token_type: src.SEMICOLON, Literal: ";"},
241+
{Token_type: src.INT, Literal: "10"},
242+
{Token_type: src.MINUSASSING, Literal: "-="},
243+
{Token_type: src.INT, Literal: "1"},
244+
{Token_type: src.SEMICOLON, Literal: ";"},
245+
{Token_type: src.INT, Literal: "10"},
246+
{Token_type: src.TIMEASSI, Literal: "*="},
247+
{Token_type: src.INT, Literal: "2"},
248+
{Token_type: src.SEMICOLON, Literal: ";"},
249+
{Token_type: src.INT, Literal: "10"},
250+
{Token_type: src.DIVASSING, Literal: "/="},
251+
{Token_type: src.INT, Literal: "2"},
252+
{Token_type: src.SEMICOLON, Literal: ";"},
225253
}
226254

227255
l.Assert().Equal(expectedTokens, tokens)

0 commit comments

Comments
 (0)