add test for REPL run file

This commit is contained in:
lyon 2022-10-25 19:49:45 +08:00
parent 1bf5663ecb
commit bcf4c637a7
2 changed files with 117 additions and 0 deletions

View File

@ -455,6 +455,25 @@ TEST(module, REPL_script) {
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(module, REPL_script_2) {
/* init */
pikaMemInfo.heapUsedMax = 0;
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
extern unsigned char pikaModules_py_a[];
obj_linkLibrary(pikaMain, pikaModules_py_a);
/* run */
__platform_printf("BEGIN\r\n");
f_getchar_fp = fopen("test/python/UnitTest2.py", "rb");
pikaScriptShell_withGetchar(pikaMain, f_getchar);
fclose((FILE*)f_getchar_fp);
/* collect */
/* assert */
EXPECT_STREQ(log_buff[1], "mem used max:\r\n");
/* deinit */
obj_deinit(pikaMain);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(module, REPL_big_script) {
/* init */
pikaMemInfo.heapUsedMax = 0;

98
test/python/UnitTest2.py Normal file
View File

@ -0,0 +1,98 @@
#!pika
import PikaStdLib
import PikaStdData
def EXPECT_EQ(test_name, input, expected):
print('-----TEST-----')
print(test_name)
if input != expected:
print('[Error]')
print(test_name)
print('[info] Expected:')
print(expected)
print('[info] Input:')
print(input)
# error
while True:
is_error = 1
else:
print('[ OK ]')
mem = PikaStdLib.MemChecker()
mem.resetMax()
a = 0
for i in range(0, 10):
if i == 5:
continue
a = a + i
EXPECT_EQ('for_if_continue', a, 40)
a = 0
for i in range(0, 10):
if i == 5:
break
a = a + i
EXPECT_EQ('for_if_break', a, 10)
a = 0
for i in range(0, 10):
for k in range(0, 3):
# print(k)
a = a + k
EXPECT_EQ('for_for_in_range', a, 30)
a = 0
for i in range(0, 10):
# print(i)
a = a + i
EXPECT_EQ('for_in_range', a, 45)
list = PikaStdData.List()
list.append(7)
list.append('eee')
len = list.len()
for item in list:
# print(item)
a = item
EXPECT_EQ('list_for_loop', a, 'eee')
list = PikaStdData.List()
list.append(7)
list.append('eee')
len = list.len()
a1 = list.get(0)
a2 = list.get(1)
res = iter(list)
EXPECT_EQ('iter', res, list)
dict = PikaStdData.Dict()
dict.set('a', 1)
dict.set('b', 2)
dict.remove('b')
a = dict.get('a')
EXPECT_EQ('PikaStdData', a, 1)
num = 0
i = 2
for i in range(2,30):
j=2
is_prime = 1
for j in range(2,i):
if i%j==0 :
is_prime = 0
break
if is_prime:
num = num + i
EXPECT_EQ('prime_number_30', num, 129)
print('====================')
print('[Unit Tests Succeed]')
print('====================')
print('mem used max:')
mem.max()
exit()
#!pika