[python] Add tests for each module

This commit is contained in:
Émilie Feral
2020-04-01 15:41:48 +02:00
committed by LeaNumworks
parent ec5803f06f
commit cdff61f64b
7 changed files with 139 additions and 0 deletions

View File

@@ -191,5 +191,11 @@ $(call object_for,$(python_src)): $(BUILD_DIR)/python/port/genhdr/qstrdefs.gener
tests_src += $(addprefix python/test/,\
basics.cpp \
execution_environment.cpp \
ion.cpp \
kandinsky.cpp \
math.cpp \
random.cpp \
time.cpp \
turtle.cpp \
matplotlib.cpp \
)

25
python/test/ion.cpp Normal file
View File

@@ -0,0 +1,25 @@
#include <quiz.h>
#include "execution_environment.h"
QUIZ_CASE(python_ion_import) {
// Test "from ion import *"
TestExecutionEnvironment env = init_environement();
assert_command_execution_fails(env, "keydown(KEY_LEFT)");
assert_command_execution_succeeds(env, "from ion import *");
assert_command_execution_succeeds(env, "keydown(KEY_LEFT)");
deinit_environment();
// "import ion"
env = init_environement();
assert_command_execution_fails(env, "ion.keydown(ion.KEY_LEFT)");
assert_command_execution_succeeds(env, "import ion");
assert_command_execution_succeeds(env, "ion.keydown(ion.KEY_LEFT)");
deinit_environment();
}
QUIZ_CASE(python_ion_keydown) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_succeeds(env, "from ion import *");
assert_command_execution_succeeds(env, "keydown(KEY_LEFT)", "False\n");
deinit_environment();
}

28
python/test/kandinsky.cpp Normal file
View File

@@ -0,0 +1,28 @@
#include <quiz.h>
#include "execution_environment.h"
QUIZ_CASE(python_kandinsky_import) {
// Test "from kandinsky import *"
TestExecutionEnvironment env = init_environement();
assert_command_execution_fails(env, "get_pixel(0,0)");
assert_command_execution_succeeds(env, "from kandinsky import *");
assert_command_execution_succeeds(env, "get_pixel(0,0)");
deinit_environment();
// "import kandinsky"
env = init_environement();
assert_command_execution_fails(env, "kandinsky.get_pixel(0,0)");
assert_command_execution_succeeds(env, "import kandinsky");
assert_command_execution_succeeds(env, "kandinsky.get_pixel(0,0)");
deinit_environment();
}
QUIZ_CASE(python_kandinsky_basics) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_succeeds(env, "from kandinsky import *");
assert_command_execution_succeeds(env, "set_pixel(0,0,color(12,12,12))");
assert_command_execution_succeeds(env, "get_pixel(0,0)");
assert_command_execution_succeeds(env, "fill_rect(0,0,10,10,color(2,3,2))");
assert_command_execution_succeeds(env, "draw_string('hello',0,0)");
deinit_environment();
}

19
python/test/math.cpp Normal file
View File

@@ -0,0 +1,19 @@
#include <quiz.h>
#include "execution_environment.h"
QUIZ_CASE(python_math) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_succeeds(env, "from math import *");
assert_command_execution_succeeds(env, "e", "2.718281828459045\n");
assert_command_execution_succeeds(env, "gamma(9)", "40320.0\n");
deinit_environment();
}
QUIZ_CASE(python_cmath) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_succeeds(env, "from cmath import *");
assert_command_execution_succeeds(env, "cos(0)", "(1+-0j)\n");
deinit_environment();
}

11
python/test/random.cpp Normal file
View File

@@ -0,0 +1,11 @@
#include <quiz.h>
#include "execution_environment.h"
QUIZ_CASE(python_random) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_fails(env, "random()");
assert_command_execution_succeeds(env, "from random import *");
assert_command_execution_succeeds(env, "random()");
assert_command_execution_succeeds(env, "getrandbits(23)");
deinit_environment();
}

12
python/test/time.cpp Normal file
View File

@@ -0,0 +1,12 @@
#include <quiz.h>
#include "execution_environment.h"
QUIZ_CASE(python_time) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_fails(env, "monotonic()");
assert_command_execution_succeeds(env, "from time import *");
assert_command_execution_succeeds(env, "monotonic()");
assert_command_execution_succeeds(env, "sleep(23)");
deinit_environment();
}

38
python/test/turtle.cpp Normal file
View File

@@ -0,0 +1,38 @@
#include <quiz.h>
#include "execution_environment.h"
// TODO: to be completed
QUIZ_CASE(python_turtle) {
TestExecutionEnvironment env = init_environement();
assert_command_execution_fails(env, "forward(3)");
assert_command_execution_succeeds(env, "from turtle import *");
assert_command_execution_succeeds(env, "reset()");
assert_command_execution_succeeds(env, "forward(10)");
assert_command_execution_succeeds(env, "backward(5)");
assert_command_execution_succeeds(env, "right(10)");
assert_command_execution_succeeds(env, "left(5)");
assert_command_execution_succeeds(env, "circle(28)");
assert_command_execution_succeeds(env, "speed(28)");
assert_command_execution_succeeds(env, "goto(28,28)");
assert_command_execution_succeeds(env, "position()", "(28.0, 28.0)\n");
assert_command_execution_succeeds(env, "setheading(28)");
assert_command_execution_succeeds(env, "heading()", "28.0\n");
assert_command_execution_succeeds(env, "pendown()");
assert_command_execution_succeeds(env, "penup()");
assert_command_execution_succeeds(env, "pensize(2)");
assert_command_execution_succeeds(env, "isdown()", "False\n");
assert_command_execution_succeeds(env, "showturtle()");
deinit_environment();
}
QUIZ_CASE(python_turtle_circle) {
// Turtle position should be unchanged after a complete circle
TestExecutionEnvironment env = init_environement();
assert_command_execution_succeeds(env, "from turtle import *");
assert_command_execution_succeeds(env, "goto(0,0)");
assert_command_execution_succeeds(env, "circle(28)");
// FIXME: this is actually not true
//assert_command_execution_succeeds(env, "position()", "(0.0, 0.0)\n");
deinit_environment();
}