示例#1
0
 def test_validate_from_good_table(self):
     tm = self.tm
     t = Table(tm)
     t.c1 = ["me", "me3"]
     t_serialized = t.to_dict()
     t = tm.validate(t)
     self.assertEqual(t.to_dict(), t_serialized)
示例#2
0
 def test_validate_from_good_table(self):
     tm = self.tm
     t = Table(tm)
     t.c1 = ["me", "me3"]
     t_serialized = t.to_dict()
     t = tm.validate(t)
     self.assertEqual(t.to_dict(), t_serialized)
 def validate(self, value):
     if not isinstance(value, Table) or self != value.meta:
         if isinstance(value, Table):
             value = value.to_dict()
         # Make a table using ourself as the meta
         value.pop("typeid")
         value = Table(self, value)
     # Check column lengths
     value.verify_column_lengths()
     return value
示例#4
0
 def setUp(self):
     meta = Mock()
     meta.elements = OrderedDict()
     meta.elements["e1"] = NumberArrayMeta("int32")
     meta.elements["e2"] = NumberArrayMeta("int32")
     meta.elements["e3"] = NumberArrayMeta("int32")
     self.t = Table(meta)
     self.t.e1 = [1]
     self.t.e2 = [2]
     self.t.e3 = [3]
示例#5
0
 def validate(self, value):
     if value is None:
         value = {}
     if not isinstance(value, Table) or self != value.meta:
         if isinstance(value, Table):
             value = value.to_dict()
         # Make a table using ourself as the meta
         value.pop("typeid", None)
         value = Table(self, value)
     # Check column lengths
     value.verify_column_lengths()
     return value
示例#6
0
 def make_return_table(self, part_tasks):
     # Filter part tasks so that we only run the ones hooked to us
     columns = OrderedDict(name=StringArrayMeta("Part name"))
     for part in part_tasks:
         hooked = [
             method_name
             for (method_name, hook, _) in get_hook_decorated(part)
             if hook is self
         ]
         for method_name, method_meta, func in get_method_decorated(part):
             if method_name in hooked:
                 # Add return metas to the table columns
                 for arg_name in method_meta.returns.elements:
                     md = method_meta.returns.elements[arg_name].to_dict()
                     if "ArrayMeta" in md["typeid"]:
                         md["tags"] = md["tags"] + ["hook:return_array"]
                     else:
                         md["typeid"] = md["typeid"].replace(
                             "Meta", "ArrayMeta")
                     meta = deserialize_object(md, VArrayMeta)
                     if arg_name in columns:
                         column_d = columns[arg_name].to_dict()
                         assert column_d == md, \
                             "%s != %s" % (column_d, md)
                     columns[arg_name] = meta
     meta = TableMeta("Part returns from hook", columns=columns)
     return_table = Table(meta)
     return return_table
示例#7
0
 def test_from_dict(self):
     d = {"typeid":"malcolm:core/Table:1.0",
         "e2":[0, 1, 2], "e1":["value"], "e3":[6, 7]}
     t = Table.from_dict(d, self.meta)
     self.assertEqual(self.meta, t.meta)
     self.assertEqual([0, 1, 2], list(t.e2))
     self.assertEqual(["value"], t.e1)
     self.assertEqual([6, 7], list(t.e3))
示例#8
0
    def test_to_dict(self):
        t = Table(self.meta)
        t.e1 = ["value"]
        t.e2 = [1, 2]
        t.e3 = [0]

        expected = OrderedDict()
        expected["typeid"] = "malcolm:core/Table:1.0"
        expected["e1"] = ["value"]
        expected["e2"] = [1, 2]
        expected["e3"] = [0]
        actual = t.to_dict()
        # numpy compare gets in the way...
        for k, v in actual.items():
            if k != "typeid":
                actual[k] = list(v)
        self.assertEquals(expected, actual)
示例#9
0
 def test_init(self):
     meta = Mock()
     s = StringArrayMeta()
     meta.elements = {"e1": s, "e2": s, "e3": s}
     t = Table(meta)
     self.assertEquals([], t.e1)
     self.assertEquals([], t.e2)
     self.assertEquals([], t.e3)
     self.assertEquals("malcolm:core/Table:1.0", t.typeid)
示例#10
0
 def setUp(self):
     meta = Mock()
     meta.elements = OrderedDict()
     meta.elements["e1"] = NumberArrayMeta("int32")
     meta.elements["e2"] = NumberArrayMeta("int32")
     meta.elements["e3"] = NumberArrayMeta("int32")
     self.t = Table(meta)
     self.t.e1 = [1]
     self.t.e2 = [2]
     self.t.e3 = [3]
示例#11
0
 def test_from_dict(self):
     d = {
         "typeid": "malcolm:core/Table:1.0",
         "e2": [0, 1, 2],
         "e1": ["value"],
         "e3": [6, 7]
     }
     t = Table.from_dict(d, self.meta)
     self.assertEqual(self.meta, t.meta)
     self.assertEqual([0, 1, 2], list(t.e2))
     self.assertEqual(["value"], t.e1)
     self.assertEqual([6, 7], list(t.e3))
示例#12
0
 def test_init_with_dict(self):
     meta = Mock()
     meta.elements = {
         "e1": NumberArrayMeta("int32"),
         "e2": StringArrayMeta(),
         "e3": StringArrayMeta()
     }
     d = {"e1": [0, 1], "e3": ["value"]}
     t = Table(meta, d)
     self.assertEquals([0, 1], list(t.e1))
     self.assertEquals([], t.e2)
     self.assertEquals(["value"], t.e3)
     self.assertEquals("malcolm:core/Table:1.0", t.typeid)
示例#13
0
 def validate(self, value):
     if value is None:
         value = {}
     if isinstance(value, Table):
         if self != value.meta:
             # Make a table using ourself as the meta
             value = value.to_dict()
             value.pop("typeid", None)
             value = Table(self, value)
     else:
         # Should be a dict
         value = Table(self, value)
     # Check column lengths
     value.verify_column_lengths()
     return value
示例#14
0
    def test_to_dict(self):
        t = Table(self.meta)
        t.e1 = ["value"]
        t.e2 = [1, 2]
        t.e3 = [0]

        expected = OrderedDict()
        expected["typeid"] = "malcolm:core/Table:1.0"
        expected["e1"] = ["value"]
        expected["e2"] = [1, 2]
        expected["e3"] = [0]
        actual = t.to_dict()
        # numpy compare gets in the way...
        for k, v in actual.items():
            if k != "typeid":
                actual[k] = list(v)
        self.assertEquals(expected, actual)
示例#15
0
 def test_dict_roundtrip(self):
     t = Table(self.meta)
     d = t.to_dict()
     t2 = Table.from_dict(d.copy(), self.meta)
     self.assertEqual(d, t2.to_dict())
示例#16
0
 def test_init_with_none(self):
     meta = Mock()
     meta.elements = {"e1": StringArrayMeta()}
     t = Table(meta, None)
     self.assertEquals([], t.e1)
     self.assertEquals("malcolm:core/Table:1.0", t.typeid)
示例#17
0
class TestTableRowOperations(unittest.TestCase):
    def setUp(self):
        meta = Mock()
        meta.elements = OrderedDict()
        meta.elements["e1"] = NumberArrayMeta("int32")
        meta.elements["e2"] = NumberArrayMeta("int32")
        meta.elements["e3"] = NumberArrayMeta("int32")
        self.t = Table(meta)
        self.t.e1 = [1]
        self.t.e2 = [2]
        self.t.e3 = [3]

    def test_row_access(self):
        self.assertEqual([1, 2, 3], self.t[0])

    def test_row_access_index_error(self):
        with self.assertRaises(IndexError):
            self.t[1]
        self.t.e1 = [1, 11]
        self.t.e2 = [2, 12]
        self.t.e3 = [3, 13]
        self.t[1]
        with self.assertRaises(IndexError):
            self.t[2]

    def test_row_assignment(self):
        self.t[0] = [7, 8, 9]
        self.assertEqual([7], self.t.e1)
        self.assertEqual([8], self.t.e2)
        self.assertEqual([9], self.t.e3)

    def test_row_assignment_bad_row_raises(self):
        with self.assertRaises(ValueError):
            self.t[0] = [7, 8]
        self.assertEqual([1], self.t.e1)
        self.assertEqual([2], self.t.e2)
        self.assertEqual([3], self.t.e3)

    def test_row_assingment_index_error(self):
        with self.assertRaises(IndexError):
            self.t[1] = [7, 8, 9]

    def test_row_append(self):
        self.t.append([11, 12, 13])
        self.t.append([21, 22, 23])
        self.assertEquals([1, 11, 21], list(self.t.e1))
        self.assertEquals([2, 12, 22], list(self.t.e2))
        self.assertEquals([3, 13, 23], list(self.t.e3))

    def test_row_append_bad_row_raises(self):
        self.assertRaises(ValueError, self.t.append, [11, 12])
        self.assertRaises(ValueError, self.t.append, [11, 12, 13, 14])

    def test_bad_columns_raise(self):
        self.t.e1 = [1, 2]
        with self.assertRaises(AssertionError):
            self.t[0]
        with self.assertRaises(AssertionError):
            self.t[0] = [0, 0, 0]
        with self.assertRaises(AssertionError):
            self.t.append([0, 0, 0])
示例#18
0
 def test_dict_roundtrip(self):
     t = Table(self.meta)
     d = t.to_dict()
     t2 = Table.from_dict(d.copy(), self.meta)
     self.assertEqual(d, t2.to_dict())
示例#19
0
class TestTableRowOperations(unittest.TestCase):
    def setUp(self):
        meta = Mock()
        meta.elements = OrderedDict()
        meta.elements["e1"] = NumberArrayMeta("int32")
        meta.elements["e2"] = NumberArrayMeta("int32")
        meta.elements["e3"] = NumberArrayMeta("int32")
        self.t = Table(meta)
        self.t.e1 = [1]
        self.t.e2 = [2]
        self.t.e3 = [3]

    def test_row_access(self):
        self.assertEqual([1, 2, 3], self.t[0])

    def test_row_access_index_error(self):
        with self.assertRaises(IndexError):
            self.t[1]
        self.t.e1 = [1, 11]
        self.t.e2 = [2, 12]
        self.t.e3 = [3, 13]
        self.t[1]
        with self.assertRaises(IndexError):
            self.t[2]

    def test_row_assignment(self):
        self.t[0] = [7, 8, 9]
        self.assertEqual([7], self.t.e1)
        self.assertEqual([8], self.t.e2)
        self.assertEqual([9], self.t.e3)

    def test_row_assignment_bad_row_raises(self):
        with self.assertRaises(ValueError):
            self.t[0] = [7, 8]
        self.assertEqual([1], self.t.e1)
        self.assertEqual([2], self.t.e2)
        self.assertEqual([3], self.t.e3)

    def test_row_assingment_index_error(self):
        with self.assertRaises(IndexError):
            self.t[1] = [7, 8, 9]

    def test_row_append(self):
        self.t.append([11, 12, 13])
        self.t.append([21, 22, 23])
        self.assertEquals([1, 11, 21], list(self.t.e1))
        self.assertEquals([2, 12, 22], list(self.t.e2))
        self.assertEquals([3, 13, 23], list(self.t.e3))

    def test_row_append_bad_row_raises(self):
        self.assertRaises(ValueError, self.t.append, [11, 12])
        self.assertRaises(ValueError, self.t.append, [11, 12, 13, 14])

    def test_bad_columns_raise(self):
        self.t.e1 = [1, 2]
        with self.assertRaises(AssertionError):
            self.t[0]
        with self.assertRaises(AssertionError):
            self.t[0] = [0, 0, 0]
        with self.assertRaises(AssertionError):
            self.t.append([0, 0, 0])