-
Notifications
You must be signed in to change notification settings - Fork 0
Simple Tester [clge]
Richel Bilderbeek edited this page Feb 17, 2018
·
2 revisions
[RJCB: Awesome you do this testing! Next step is using an existing testing framework. Then this page can be removed :-) ]
This is a simple utility to test your games
from clge import SimpleTester
t = SimpleTester(5)
- Test(function, args): Runs the function without outputs and with arguments you gave
- printTestResults(): Prints the result of the test
- simulate_keyboard_press(char): Simulates keyboard button press
- simulate_keyboard_release(char): Simulates keyboard button release
- simulate_mouse_press(char): Simulates mouse button press
- simulate_mouse_release(char): Simulates mouse button release
- CoverageStart(): Starts measuring codecov
- CoverageStop(): Stops measuring codecov
- getCoverage(): Prints codecov result in a table
This (A real test example):
from clge import SimpleTester, Screen, generate_keymap
t = SimpleTester(5)
t.CoverageStart()
class SnakeTestException(Exception):
def __init__(self, message):
self.message = message
def test_screen():
scr = Screen(20, 20, auto_clear_objects_list=True, timeout=.5, auto_timeout=False, default_color=39)
return scr
def test_tail():
tailX = [None] * 20
tailY = [None] * 20
for j in range(5):
prevX = tailX[0]
prevY = tailY[0]
tailX[0] = j
tailY[0] = j*2
prev2X = 0
prev2Y = 0
for i in range(1, 20):
prev2X = tailX[i]
prev2Y = tailY[i]
tailX[i] = prevX
tailY[i] = prevY
prevX = prev2X
prevY = prev2Y
def test_keyboard():
keys = generate_keymap({
'up': 'w',
'up_arrow': 'up',
'down': 's',
'down_arrow': 'down',
'right': 'd',
'right_arrow': 'right',
'left': 'a',
'left_arrow': 'left',
})
for key in keys:
t.simulate_keyboard_press(keys[key].char)
if keys[key].detect():
pass
else:
t.simulate_keyboard_release(keys[key].char)
raise SnakeTestException("Key {} in not detected".format(keys[key].char))
t.simulate_keyboard_release(keys[key].char)
def test_collision(cases):
for i in cases:
if i[0] == i[1] and i[2] == i[3]:
print(i)
else:
pass
t.Test(test_screen)
t.Test(test_keyboard)
t.Test(test_tail)
t.Test(test_collision, [[0, 1, 2, 3], [0, 0, 2, 4], [3, 1, 3, 3]])
t.CoverageStop()
t.printTestResults()
t.getCoverage()
Will result in:
WARNING: Code Coverage is an experimental function. It does not work good.
WARNING: Use it on your own risk
INFO: Testing: "test_screen"
INFO: Test "test_screen" passed
INFO: Testing: "test_screen"
INFO: Test "test_screen" passed
INFO: Testing: "test_screen"
INFO: Test "test_screen" passed
INFO: Testing: "test_screen"
INFO: Test "test_screen" passed
INFO: Testing: "test_screen"
INFO: Test "test_screen" passed
INFO: Testing: "test_keyboard"
Pressed: w
Released: w
WARNING: Test "test_keyboard" is not passed
ERROR: Key w in not detected
INFO: Testing: "test_keyboard"
Pressed: w
Released: w
Pressed: up
Released: up
Pressed: s
Released: s
Pressed: down
Released: down
Pressed: d
Released: d
Pressed: right
Released: right
Pressed: a
Released: a
Pressed: left
Released: left
INFO: Test "test_keyboard" passed
INFO: Testing: "test_keyboard"
Pressed: w
Released: w
Pressed: up
Released: up
Pressed: s
Released: s
Pressed: down
Released: down
Pressed: d
Released: d
Pressed: right
Released: right
Pressed: a
Released: a
Pressed: left
Released: left
INFO: Test "test_keyboard" passed
INFO: Testing: "test_keyboard"
Pressed: w
Released: w
Pressed: up
Released: up
Pressed: s
Released: s
Pressed: down
Released: down
Pressed: d
Released: d
Pressed: right
Released: right
Pressed: a
Released: a
Pressed: left
Released: left
INFO: Test "test_keyboard" passed
INFO: Testing: "test_keyboard"
Pressed: w
Released: w
Pressed: up
Released: up
Pressed: s
Released: s
Pressed: down
Released: down
Pressed: d
Released: d
Pressed: right
Released: right
Pressed: a
Released: a
Pressed: left
Released: left
INFO: Test "test_keyboard" passed
INFO: Testing: "test_tail"
INFO: Test "test_tail" passed
INFO: Testing: "test_tail"
INFO: Test "test_tail" passed
INFO: Testing: "test_tail"
INFO: Test "test_tail" passed
INFO: Testing: "test_tail"
INFO: Test "test_tail" passed
INFO: Testing: "test_tail"
INFO: Test "test_tail" passed
INFO: Testing: "test_collision"
INFO: Test "test_collision" passed
INFO: Testing: "test_collision"
INFO: Test "test_collision" passed
INFO: Testing: "test_collision"
INFO: Test "test_collision" passed
INFO: Testing: "test_collision"
INFO: Test "test_collision" passed
INFO: Testing: "test_collision"
INFO: Test "test_collision" passed
95% of test are passed (19 / 20)
Not passed:
1: test_keyboard --> Key w in not detected
Coverage:
Name Stmts Miss Cover
-------------------------------------------------
SnakeTests.py 47 16 66%
clge\drawer.py 96 87 9%
clge\key_detector.py 42 34 19%
clge\testing\simple_test.py 71 45 37%
-------------------------------------------------
TOTAL 256 182 29%
Made by Rafayel Gardishyan. CLGE is an Open Source Game Engine. You can use it everywhere