This repository has been archived on 2025-06-01. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
compLIB/client_s2/test.py
Joel Klimont f6b27971c4 added more tests for double elimination and seeding
added eq and nq functions for Position class in de
fixed error in de function that would occur if the game has not started yet
2022-10-01 19:11:04 +02:00

97 lines
3.3 KiB
Python

import json
import unittest
import requests
import compLib.Seeding as Seeding
import compLib.Api as SeedingApi
import compLib.DoubleElimination as De
class SeedingTest(unittest.TestCase):
def test_basic_seed(self):
gamestate = Seeding.Gamestate(0)
self.assertEqual(gamestate.seed, 0)
self.assertEqual(gamestate.heu_color, 1)
self.assertEqual(gamestate.get_heuballen(), 1)
self.assertEqual(gamestate.get_logistic_plan(),
[12, 13, 10, 13, 12, 10, 11, 10, 12, 11, 12, 13, 10, 12, 10, 11, 13, 11, 13, 11, 12])
self.assertEqual(gamestate.get_material_deliveries(), [[3, 1], [0, 3], [3, 1], [3, 1]])
def util_get_info():
res = requests.get(SeedingApi.CONF_URL + "getInfo")
return json.loads(res.text)
def util_set_seeding():
res = requests.get(SeedingApi.CONF_URL + "setToSeeding")
return res.status_code == 200
def util_set_de():
res = requests.get(SeedingApi.CONF_URL + "setToDoubleElim")
return res.status_code == 200
def util_start_match():
res = requests.get(SeedingApi.CONF_URL + "startMatch")
return res.status_code == 200
def util_reset_state():
res = requests.get(SeedingApi.CONF_URL + "resetState")
return res.status_code == 200
def util_set_seed(seed):
res = requests.get(SeedingApi.CONF_URL + "resetState", params={"seed": seed})
return res.status_code == 200
class SeedingApiTest(unittest.TestCase):
def test_api_seeding_extensive(self):
self.assertTrue(util_set_seeding())
self.assertTrue(util_get_info()["is_seeding"])
for seed in range(0, 256):
print(f"Testing seed: {seed}")
gamestate = Seeding.Gamestate(seed)
self.assertTrue(util_set_seed(seed))
seeding_api = SeedingApi.Seeding()
self.assertEqual(seeding_api.get_heuballen(), gamestate.get_heuballen())
self.assertEqual(seeding_api.get_logistic_plan(), gamestate.get_logistic_plan())
# self.assertEqual(seeding_api.get_material_deliveries(), gamestate.get_material_deliveries())
class DeApiTest(unittest.TestCase):
def test_api_de(self):
self.assertTrue(util_set_de())
self.assertTrue(util_reset_state())
self.assertFalse(util_get_info()["is_seeding"])
de = De.DoubleElim()
self.assertEqual(de.get_pos(), (De.Position(0, 0, -1), 503))
self.assertEqual(de.get_opponent(), (De.Position(0, 0, -1), 503))
self.assertEqual(de.get_goal(), (De.Position(0, 0, -1), 503))
self.assertEqual(de.get_items(), ([], 503))
self.assertEqual(de.get_scores(), ({"self": 0, "opponent": 0}, 503))
self.assertTrue(util_start_match())
self.assertLessEqual(util_get_info()["timeleft"], 120)
self.assertEqual(de.get_pos()[1], 200)
self.assertEqual(de.get_opponent()[1], 200)
self.assertEqual(de.get_goal()[1], 200)
self.assertEqual(de.get_items()[1], 200)
self.assertEqual(de.get_scores()[1], 200)
self.assertTrue(0 <= de.get_pos()[0].x <= 250)
self.assertTrue(0 <= de.get_pos()[0].y <= 250)
self.assertTrue(0 <= de.get_pos()[0].degrees <= 360)
self.assertEqual(de.get_items(), ([], 200))
self.assertTrue(util_reset_state())
if __name__ == '__main__':
unittest.main()