summaryrefslogtreecommitdiff
path: root/test/tests/ApiTest.py
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2019-01-18 02:17:01 +0100
committeremkael <emkael@tlen.pl>2019-01-18 02:17:01 +0100
commita035a0dbde6239bf3455d84458e302d3a6c6afac (patch)
tree999d4a84b476897d74ca8889bb0c5260674d3847 /test/tests/ApiTest.py
parent033cd8f39d3e88283e4eb626f35f0e97c16e9e0e (diff)
More comprehensive API tests
Diffstat (limited to 'test/tests/ApiTest.py')
-rw-r--r--test/tests/ApiTest.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/test/tests/ApiTest.py b/test/tests/ApiTest.py
new file mode 100644
index 0000000..0af8626
--- /dev/null
+++ b/test/tests/ApiTest.py
@@ -0,0 +1,114 @@
+import csv
+import requests
+import random
+import os
+import unittest
+
+from apitest.pzbs import PzbsCalculator
+from apitest.api import ApiCalculator
+
+def runTest(tester, params):
+ return tester.get_response(
+ requests.post(
+ tester.get_url(),
+ data=tester.get_request(*params)
+ ).text)
+
+class ApiTestCase(unittest.TestCase):
+ def __setupParams(self):
+ csv_files = []
+ for root, dirs, files in os.walk('./csv'):
+ csv_files += [os.path.join(root, f) for f in files if f.lower().endswith('.csv')]
+ self.params = []
+ for csv_file in csv_files:
+ csv_content = csv.reader(open(csv_file), delimiter=";")
+ param_contents = [
+ row for idx, row in enumerate(csv_content) if idx == 2][0]
+ self.params.append((
+ param_contents[0][0].lower(),
+ None, 0,
+ int(param_contents[1]), float(param_contents[4])))
+
+ def setUp(self):
+ self.pzbs = PzbsCalculator()
+ self.api = ApiCalculator()
+ self.__setupParams()
+ self.longMessage=True
+ self.maxDiff = None
+
+ def test_csvCases(self):
+ for params in self.params:
+ for rank in ApiCalculator.ranks.keys():
+ for boards in [0, 1]:
+ p = (params[0], rank, boards, params[3], params[4])
+ self.assertEqual(
+ runTest(self.pzbs, p),
+ runTest(self.api, p),
+ msg=str(p))
+
+ def test_randomCases(self):
+ for i in range(0, 20):
+ for type in ['t', 'p', 'i']:
+ for rank in ApiCalculator.ranks.keys():
+ for boards in [0, 1]:
+ p = (type, rank, boards,
+ random.randint(6, 350),
+ random.randint(0, 4000) / 2.0)
+ self.assertEqual(
+ runTest(self.pzbs, p),
+ runTest(self.api, p),
+ msg=str(p))
+
+ def test_customParamCases(self):
+ for type in ['t', 'p', 'i']:
+ for rank in ApiCalculator.ranks.keys():
+ for boards in [0, 1]:
+ for j in range(0, 20):
+ manualParams = {
+ 'points': random.randint(20, 100)
+ }
+ p = (type, rank, boards,
+ 35, 400, manualParams)
+ self.assertEqual(
+ runTest(self.pzbs, p),
+ runTest(self.api, p),
+ msg=str(p))
+ for j in range(0, 20):
+ manualParams = {
+ 'weight': random.randint(20, 100)
+ }
+ p = (type, rank, boards,
+ 35, 400, manualParams)
+ self.assertEqual(
+ runTest(self.pzbs, p),
+ runTest(self.api, p),
+ msg=str(p))
+ for j in range(0, 20):
+ manualParams = {
+ 'players': random.randint(20, 100) * 0.001
+ }
+ p = (type, rank, boards,
+ 35, 400, manualParams)
+ self.assertEqual(
+ runTest(self.pzbs, p),
+ runTest(self.api, p),
+ msg=str(p))
+ for j in range(0, 20):
+ manualParams = {
+ 'cutoff': [
+ [random.uniform(0.04, 0.06),
+ random.uniform(0.7, 0.9)],
+ [random.uniform(0.15, 0.35),
+ random.uniform(0.15, 0.35)],
+ [random.uniform(0.4, 0.6),
+ 0.0]
+ ]
+ }
+ p = (type, rank, boards,
+ random.randint(20, 25),
+ random.randint(300, 400) / 2.0,
+ manualParams)
+ self.assertEqual(
+ runTest(self.pzbs, p),
+ runTest(self.api, p),
+ msg=str(p))