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
97 lines
3.3 KiB
Python
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()
|