summaryrefslogtreecommitdiff
path: root/upb/bindings/python/test.py
blob: 29a6c45f56fb4bd34f1726e8b56d81f5fad6bb63 (plain)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

import upb
import unittest

class TestFieldDef(unittest.TestCase):
  def test_construction(self):
    fielddef1 = upb.FieldDef()
    self.assertTrue(fielddef1.number is None)
    self.assertTrue(fielddef1.name is None)
    self.assertTrue(fielddef1.type is None)
    self.assertEqual(fielddef1.label, upb.LABEL_OPTIONAL)

    fielddef2 = upb.FieldDef(number=5, name="field2",
                             label=upb.LABEL_REQUIRED, type=upb.TYPE_INT32,
                             type_name="MyType")

    self.assertTrue(id(fielddef1) != id(fielddef2))
    self.assertEqual(fielddef2.number, 5)
    self.assertEqual(fielddef2.name, "field2")
    self.assertEqual(fielddef2.label, upb.LABEL_REQUIRED)
    self.assertEqual(fielddef2.type, upb.TYPE_INT32)
    self.assertEqual(fielddef2.type_name, "MyType")

    fielddef2.number = 8
    self.assertEqual(fielddef2.number, 8)

    fielddef2.name = "xxx"
    self.assertEqual(fielddef2.name, "xxx")

    fielddef2.label = upb.LABEL_REPEATED
    self.assertEqual(fielddef2.label, upb.LABEL_REPEATED)

    fielddef2.type = upb.TYPE_FLOAT
    self.assertEqual(fielddef2.type, upb.TYPE_FLOAT)

  def test_nosubclasses(self):
    def create_subclass():
      class MyClass(upb.FieldDef):
        pass

    self.assertRaises(TypeError, create_subclass)

  # TODO: test that assigning invalid values is properly prevented.

class TestMessageDef(unittest.TestCase):
  def test_construction(self):
    msgdef1 = upb.MessageDef()
    self.assertTrue(msgdef1.fqname is None)
    self.assertEqual(msgdef1.fields(), [])

    fields = [upb.FieldDef(number=1, name="field1", type=upb.TYPE_INT32)]
    msgdef2 = upb.MessageDef(fqname="Message2", fields=fields)

    self.assertEqual(set(msgdef2.fields()), set(fields))

    f2 = upb.FieldDef(number=2, name="field2", type=upb.TYPE_INT64)
    msgdef2.add_field(f2)

    fields.append(f2)
    self.assertEqual(set(msgdef2.fields()), set(fields))

class TestSymbolTable(unittest.TestCase):
  def test_construction(self):
    s = upb.SymbolTable()
    self.assertEqual(s.defs(), []);

    s.add_def(upb.MessageDef(fqname="A"))
    self.assertTrue(s.lookup("A") is not None)
    self.assertTrue(s.lookup("A") is s.lookup("A"))

if __name__ == '__main__':
  unittest.main()
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback