Skip to content

Commit 8640be5

Browse files
committed
add more testing and fixing documentation
1 parent 14bd3ad commit 8640be5

File tree

5 files changed

+80
-23
lines changed

5 files changed

+80
-23
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,8 @@ We support object call in any of data type.
414414
Here a full of list of support object call for string:
415415

416416
```
417-
"ola".type(); // "STRING"
417+
"hello".type(); // "STRING"
418+
"hello".length(); // 5
418419
"a,b,c".split(","); // ["a", "b", "c"];
419420
"hello world".replace("world", "ninja"); // "hello ninja"
420421
"hello world".contain("hello"); // TRUE

evaluator/string_test.go

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ func TestEvalStringExpression(t *testing.T) {
5151
{`"Hello" != "Hello"`, false},
5252
{`"Hello" == "World"`, false},
5353
{`"Hello" != "World"`, true},
54+
{`"Hello"[0] != "World"[0]`, true},
5455
}
5556

5657
for i, tt := range tests {
5758
t.Run(fmt.Sprintf("TestEvalStringExpression[%d]", i), func(t *testing.T) {
5859
evaluated := testEval(tt.input, t)
5960
testObjectLiteral(t, evaluated, tt.expected)
6061
})
61-
6262
}
6363
}
6464

@@ -109,18 +109,19 @@ func TestErrorStringHandling(t *testing.T) {
109109
},
110110
}
111111

112-
for _, tt := range tests {
113-
evaluated := testEval(tt.input, t)
112+
for i, tt := range tests {
113+
t.Run(fmt.Sprintf("TestErrorStringHandling[%d]", i), func(t *testing.T) {
114+
evaluated := testEval(tt.input, t)
114115

115-
errObj, ok := evaluated.(*object.Error)
116-
if !ok {
117-
t.Errorf("no error object returned. got=%T(%+v)", evaluated, evaluated)
118-
continue
119-
}
116+
errObj, ok := evaluated.(*object.Error)
117+
if !ok {
118+
t.Fatalf("no error object returned. got=%T(%+v)", evaluated, evaluated)
119+
}
120120

121-
if errObj.Message != tt.expectedMessage {
122-
t.Errorf("wrong error message. expected=%q, got=%q", tt.expectedMessage, errObj.Message)
123-
}
121+
if errObj.Message != tt.expectedMessage {
122+
t.Errorf("wrong error message. expected=%q, got=%q", tt.expectedMessage, errObj.Message)
123+
}
124+
})
124125
}
125126
}
126127

@@ -238,17 +239,20 @@ func TestStringMethodSplitWrongParameter(t *testing.T) {
238239
},
239240
}
240241

241-
for _, tt := range tests {
242-
evaluated := testEval(tt.input, t)
242+
for i, tt := range tests {
243+
t.Run(fmt.Sprintf("TestStringMethodSplitWrongParameter[%d]", i), func(t *testing.T) {
244+
evaluated := testEval(tt.input, t)
243245

244-
errObj, ok := evaluated.(*object.Error)
245-
if !ok {
246-
t.Fatalf("no error object returned. got=%T(%+v)", evaluated, evaluated)
247-
}
246+
errObj, ok := evaluated.(*object.Error)
247+
if !ok {
248+
t.Fatalf("no error object returned. got=%T(%+v)", evaluated, evaluated)
249+
}
250+
251+
if errObj.Message != tt.expectedErrorMessage {
252+
t.Errorf("error message expected to be: \"%s\". got: \"%s\"", tt.expectedErrorMessage, errObj.Message)
253+
}
254+
})
248255

249-
if errObj.Message != tt.expectedErrorMessage {
250-
t.Errorf("error message expected to be: \"%s\". got: \"%s\"", tt.expectedErrorMessage, errObj.Message)
251-
}
252256
}
253257
}
254258

testdata/assert_logic_operators.ninja

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,34 @@ var tests = [
44
{"expression": false && true, "expected": false, "name": "false && true"},
55
{"expression": !false && true, "expected": true, "name": "!false && true"},
66
{"expression": true && !false, "expected": true, "name": "true && !false"},
7+
78
{"expression": true || true, "expected": true, "name": "true || true"},
89
{"expression": true || false, "expected": true, "name": "true || false"},
910
{"expression": false || true, "expected": true, "name": "false || true"},
1011
{"expression": false || false, "expected": false, "name": "false || false"},
1112
{"expression": !false || !false, "expected": true, "name": "!false || !false"},
12-
{"expression": 0 || false, "expected": true, "name": "0 || false"}
13+
{"expression": 0 || false, "expected": true, "name": "0 || false"},
14+
15+
{"expression": 1 == 1, "expected": true, "name": "1 == 1"},
16+
{"expression": 1 == 2, "expected": false, "name": "1 == 2"},
17+
{"expression": 2 == 1, "expected": false, "name": "2 == 1"},
18+
{"expression": 1 != 1, "expected": false, "name": "1 != 1"},
19+
{"expression": 2 != 1, "expected": true, "name": "2 != 1"},
20+
{"expression": 1 != 2, "expected": true, "name": "1 != 2"},
21+
22+
{"expression": 1 < 1, "expected": false, "name": "1 < 1"},
23+
{"expression": 1 < 2, "expected": true, "name": "1 < 2"},
24+
{"expression": 2 < 1, "expected": false, "name": "2 < 1"},
25+
{"expression": 1 <= 1, "expected": true, "name": "1 <= 1"},
26+
{"expression": 2 <= 1, "expected": false, "name": "2 <= 1"},
27+
{"expression": 1 <= 2, "expected": true, "name": "1 <= 2"},
1328

29+
{"expression": 1 > 1, "expected": false, "name": "1 > 1"},
30+
{"expression": 1 > 2, "expected": false, "name": "1 > 2"},
31+
{"expression": 2 > 1, "expected": true, "name": "2 > 1"},
32+
{"expression": 1 >= 1, "expected": true, "name": "1 >= 1"},
33+
{"expression": 2 >= 1, "expected": true, "name": "2 >= 1"},
34+
{"expression": 1 >= 2, "expected": false, "name": "1 >= 2"}
1435
];
1536

1637
for (var t = 0; t <= len(tests) - 1; t = t + 1) {

testdata/assert_variable.ninja

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,14 @@ var tests = [
1919
{"expression": 2 / 2 * 1, "total": 1, "name": "(2 / 2 * 1)"},
2020
{"expression": 2 / 2 * 1 - 20, "total": -19, "name": "(2 / 2 * 1 - 20)"},
2121
{"expression": 4 % 2, "total": 0, "name": "(4 % 2)"},
22-
{"expression": 100 / 8, "total": 12.5, "name": "(100 / 8)"}
22+
{"expression": 100 / 8, "total": 12.5, "name": "(100 / 8)"},
23+
{"expression": 100 ** 2, "total": 10000, "name": "(100 ** 0)"},
24+
{"expression": 5 ** 2 ** 2 , "total": 10000, "name": "(5 ** (2 ** 2))"},
25+
{"expression": 8 & 2 , "total": 0, "name": "(8 & 2)"},
26+
{"expression": 8 | 2 , "total": 10, "name": "(8 | 2)"},
27+
{"expression": 8 ^ 2 , "total": 10, "name": "(8 ^ 2)"},
28+
{"expression": 8 << 2 , "total": 32, "name": "(8 << 2)"},
29+
{"expression": 8 >> 2 , "total": 2, "name": "(8 >> 2)"}
2330
];
2431

2532
for (var t = 0; t <= len(tests) - 1; t = t + 1) {

testdata/expected.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ OK: Operations (2 / 2 * 1)
66
OK: Operations (2 / 2 * 1 - 20)
77
OK: Operations (4 % 2)
88
OK: Operations (100 / 8)
9+
OK: Operations (100 ** 0)
10+
OK: Operations (8 & 2)
11+
OK: Operations (8 | 2)
12+
OK: Operations (8 ^ 2)
13+
OK: Operations (8 << 2)
14+
OK: Operations (8 >> 2)
915
OK: Enum: 1
1016
OK: Enum: 1.0
1117
OK: Enum: Hello
@@ -25,6 +31,24 @@ OK: Operations Logic Operator false || true
2531
OK: Operations Logic Operator false || false
2632
OK: Operations Logic Operator !false || !false
2733
OK: Operations Logic Operator 0 || false
34+
OK: Operations Logic Operator 1 == 1
35+
OK: Operations Logic Operator 1 == 2
36+
OK: Operations Logic Operator 2 == 1
37+
OK: Operations Logic Operator 1 != 1
38+
OK: Operations Logic Operator 2 != 1
39+
OK: Operations Logic Operator 1 != 2
40+
OK: Operations Logic Operator 1 < 1
41+
OK: Operations Logic Operator 1 < 2
42+
OK: Operations Logic Operator 2 < 1
43+
OK: Operations Logic Operator 1 <= 1
44+
OK: Operations Logic Operator 2 <= 1
45+
OK: Operations Logic Operator 1 <= 2
46+
OK: Operations Logic Operator 1 > 1
47+
OK: Operations Logic Operator 1 > 2
48+
OK: Operations Logic Operator 2 > 1
49+
OK: Operations Logic Operator 1 >= 1
50+
OK: Operations Logic Operator 2 >= 1
51+
OK: Operations Logic Operator 1 >= 2
2852
OK: Index Array
2953
OK: Index Array
3054
OK: Array Map -> Reduce

0 commit comments

Comments
 (0)