File: test_compat.py

package info (click to toggle)
python-xsdata 24.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,936 kB
  • sloc: python: 29,257; xml: 404; makefile: 27; sh: 6
file content (35 lines) | stat: -rw-r--r-- 1,162 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from unittest import TestCase

from tests.fixtures.models import TypeA, TypeC
from xsdata.exceptions import XmlContextError
from xsdata.formats.dataclass.compat import Dataclasses


class ClassTypeTests(TestCase):
    def test_score_object(self):
        class_type = Dataclasses()
        self.assertEqual(-1.0, class_type.score_object(None))

        obj = TypeC(1, "1", 1.1)
        self.assertEqual(5.0, class_type.score_object(obj))

        self.assertEqual(-1, class_type.score_object(None))
        self.assertEqual(1.0, class_type.score_object("a"))
        self.assertEqual(1.5, class_type.score_object(2.9))


class DataclassesTests(TestCase):
    def test_is_model(self):
        class_type = Dataclasses()
        self.assertTrue(class_type.is_model(TypeA))
        self.assertTrue(class_type.is_model(TypeA(1)))
        self.assertFalse(class_type.is_model(1))

    def test_verify_model(self):
        class_type = Dataclasses()
        class_type.verify_model(TypeA)

        with self.assertRaises(XmlContextError) as cm:
            class_type.verify_model(int)

        self.assertEqual(f"Type '{int}' is not a dataclass.", str(cm.exception))