Mercurial > hgrepos > Python > libs > data-schema
diff tests/test_schema.py @ 44:ea8c2d01a9d9
Begin pickling support for ValidatenProblems, _Schema and Context
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 02 Aug 2023 09:31:49 +0200 |
| parents | 4ca530618303 |
| children | 92ae1e882cef |
line wrap: on
line diff
--- a/tests/test_schema.py Thu Jul 20 09:37:22 2023 +0200 +++ b/tests/test_schema.py Wed Aug 02 09:31:49 2023 +0200 @@ -2,6 +2,7 @@ import copy import datetime import functools +import pickle import re import unittest @@ -22,6 +23,54 @@ yield from () +class Pickling(unittest.TestCase): + + def test_severity(self): + for sev in SEVERITY: + b = pickle.dumps(sev) + sev2 = pickle.loads(b) + self.assertEqual(sev, sev2) + + def test_errors(self): + for err in ERRORS: + b = pickle.dumps(err) + err2 = pickle.loads(b) + self.assertEqual(err, err2) + + def test_warnings(self): + for warn in ERRORS: + b = pickle.dumps(warn) + warn2 = pickle.loads(b) + self.assertEqual(warn, warn2) + + def test_combination(self): + obj = (SEVERITY.ERROR, ERRORS.E10001, WARNINGS.W80000) + b = pickle.dumps(obj) + obj2 = pickle.loads(b) + self.assertEqual(obj, obj2) + + def test_problem_1(self): + problem = data_schema.ValidationProblem( + code=ERRORS.E10002, + severity=SEVERITY.ERROR, + hint="a-hint") + b = pickle.dumps(problem) + problem2 = pickle.loads(b) + self.assertIsInstance(problem2, data_schema.ValidationProblem) + self.assertEqual(problem, problem2) + + def test_problem_2(self): + problem = data_schema.ValidationProblem( + code=ERRORS.E10002, + severity=SEVERITY.ERROR, + hint="a-hint") + + def _cmp(a, b): + return a == b + + self.assertFalse(_cmp(problem, 1)) + + class YAML(unittest.TestCase): """Tests to load Python objects from YAML with complex Python-specific @@ -2483,6 +2532,25 @@ self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10030, pr[0].code) + def test_number_pickle(self): + pr = list(data_schema.validate(1.8, {"$type": "number"})) + self.assertEqual(0, len(pr)) + pr = list(data_schema.validate(1, {"$type": "num"})) + self.assertEqual(0, len(pr)) + + pr = list(data_schema.validate( + 2.0, + {"$type": "number", + "min-value": 3, + "max-value": 1.3})) + + pr2 = pickle.loads(pickle.dumps(pr)) + self.assertEqual(2, len(pr2)) + self.assertEqual(ERRORS.E10031, pr2[0].code) + self.assertEqual(ERRORS.E10032, pr2[1].code) + self.maxDiff = None + self.assertEqual(repr(pr), repr(pr2)) + def test_bool(self): pr = list(data_schema.validate(True, {"$type": "bool"})) self.assertEqual(0, len(pr))
