grapher/grader/tests/base_grader.py
2025-02-07 14:44:03 +01:00

77 lines
2.4 KiB
Python

import sys
sys.path.append("..")
from valuation import BaseGrading
# Testing
import unittest
from unittest.mock import patch
class TestBaseGrading(unittest.TestCase):
test_schema = {"Grade1": 0.1, "Grade2": 0.3}
@patch.multiple(BaseGrading, __abstractmethods__=set())
def get_base_grader(self):
return BaseGrading(self.test_schema, "TestGrader")
def test_getter(self):
grader = self.get_base_grader()
self.assertEqual(grader.get("Grade1"), self.test_schema["Grade1"])
self.assertEqual(grader.get("grade1"), self.test_schema["Grade1"])
def test_len(self):
grader = self.get_base_grader()
self.assertEqual(len(grader), len(self.test_schema))
def test_contains(self):
grader = self.get_base_grader()
self.assertTrue(0.1 in grader)
self.assertTrue(0.9 in grader)
self.assertFalse(100 in grader)
self.assertFalse(None in grader)
self.assertTrue("Grade1" in grader)
self.assertTrue("gRADE2" in grader)
def test_iter(self):
grader = self.get_base_grader()
for grade, test in zip(grader, self.test_schema):
self.assertEqual(grade, test)
def test_reversed(self):
grader = self.get_base_grader()
for grade, test in zip(reversed(grader), reversed(self.test_schema)):
self.assertEqual(grade, test)
def test_str(self):
grader = self.get_base_grader()
self.assertEqual(str(grader), "TestGrader")
def test_repr(self):
grader = self.get_base_grader()
self.assertEqual(repr(grader), f"<TestGrader: ({str(self.test_schema)})>")
def test_eq(self):
grader = self.get_base_grader()
self.assertTrue(grader == grader)
self.assertTrue(grader != grader)
def test_keys(self):
grader = self.get_base_grader()
for k1, t1 in zip(grader.keys(), self.test_schema.keys()):
self.assertEqual(k1, t1)
def test_items(self):
grader = self.get_base_grader()
for v1, t1 in zip(grader.values(), self.test_schema.values()):
self.assertEqual(v1, t1)
def test_items(self):
grader = self.get_base_grader()
for g1, t1 in zip(grader.items(), self.test_schema.items()):
k, v = g1
tk, tv = t1
self.assertEqual(k, tk)
self.assertEqual(v, tv)
if __name__ == "__main__":
unittest.main()