Ejemplo n.º 1
0
 def _load_from_structure(self, structure):
     table = Table(self.layout.meta)
     for part_name, part_structure in structure["layout"].items():
         table.append([part_name, "", part_structure["x"],
                       part_structure["y"], part_structure["visible"]])
     self.set_layout(table)
     self.run_hook(self.Load, self.create_part_tasks(), structure)
Ejemplo n.º 2
0
 def update_datasets_table(self, context, part_info):
     # Update the dataset table
     datasets_table = Table(dataset_table_meta)
     for i in DatasetProducedInfo.filter_values(part_info):
         if i.name not in datasets_table.name:
             row = [i.name, i.filename, i.type, i.rank, i.path, i.uniqueid]
             datasets_table.append(row)
     self.datasets.set_value(datasets_table)
Ejemplo n.º 3
0
 def update_datasets_table(self, task, part_info):
     # Update the dataset table
     datasets_table = Table(dataset_table_meta)
     for i in DatasetProducedInfo.filter_values(part_info):
         if i.name not in datasets_table.name:
             row = [i.name, i.filename, i.type, i.rank, i.path, i.uniqueid]
             datasets_table.append(row)
     self.datasets.set_value(datasets_table)
Ejemplo n.º 4
0
 def test_set_export_parts(self):
     context = Context(self.p)
     b = context.block_view("mainBlock")
     assert list(b) == [
         'meta', 'health', 'state', 'layout', 'design', 'exports',
         'modified', 'disable', 'reset', 'save', 'attr'
     ]
     new_exports = Table(self.c.exports.meta)
     new_exports.append(('part2.attr', 'childAttr'))
     new_exports.append(('part2.reset', 'childReset'))
     self.c.set_exports(new_exports)
     assert self.c.modified.value == True
     assert self.c.modified.alarm.message == "exports changed"
     call_with_params(self.c.save, design='testSaveLayout')
     assert self.c.modified.value == False
     # block has changed, get a new view
     b = context.block_view("mainBlock")
     assert list(b) == [
         'meta', 'health', 'state', 'layout', 'design', 'exports',
         'modified', 'disable', 'reset', 'save', 'attr', 'childAttr',
         'childReset'
     ]
     assert self.c.state.value == "Ready"
     assert b.childAttr.value == "defaultv"
     assert self.c.modified.value == False
     m = MagicMock()
     f = b.childAttr.subscribe_value(m)
     # allow a subscription to come through
     context.sleep(0.1)
     m.assert_called_once_with("defaultv")
     m.reset_mock()
     self.c_part.attr.set_value("newv")
     assert b.childAttr.value == "newv"
     assert self.c_part.attr.value == "newv"
     assert self.c.modified.value == True
     assert self.c.modified.alarm.message == \
            "part2.attr.value = 'newv' not 'defaultv'"
     # allow a subscription to come through
     context.sleep(0.1)
     m.assert_called_once_with("newv")
     b.childAttr.put_value("again")
     assert b.childAttr.value == "again"
     assert self.c_part.attr.value == "again"
     assert self.c.modified.value == True
     assert self.c.modified.alarm.message == \
            "part2.attr.value = 'again' not 'defaultv'"
     # remove the field
     new_exports = Table(self.c.exports.meta)
     self.c.set_exports(new_exports)
     assert self.c.modified.value == True
     call_with_params(self.c.save)
     assert self.c.modified.value == False
     # block has changed, get a new view
     b = context.block_view("mainBlock")
     assert "childAttr" not in b
Ejemplo n.º 5
0
 def set_layout(self, value):
     part_info = self.run_hook(self.ReportOutports, self.create_part_tasks())
     part_info = self.run_hook(
         self.Layout, self.create_part_tasks(), part_info, value)
     layout_table = Table(self.layout.meta)
     for name, layout_infos in LayoutInfo.filter_parts(part_info).items():
         assert len(layout_infos) == 1, \
             "%s returned more than 1 layout infos" % name
         layout_info = layout_infos[0]
         row = [name, layout_info.mri, layout_info.x, layout_info.y,
                layout_info.visible]
         layout_table.append(row)
     self.layout.set_value(layout_table)
Ejemplo n.º 6
0
    def table_from_list(self, int_values):
        table = Table(self.meta)
        if self.fields:
            nconsume = self._calc_nconsume()

            for i in range(int(len(int_values) / nconsume)):
                int_value = 0
                for c in range(nconsume):
                    int_value += int_values[i*nconsume+c] << (32 * c)
                row = []
                for name, (bits_hi, bits_lo) in self.fields.items():
                    field_value = (int_value & (2 ** (bits_hi + 1) - 1)) >> bits_lo
                    row.append(field_value)
                table.append(row)
        return table
Ejemplo n.º 7
0
 def set_layout(self, value):
     # If it isn't a table, make it one
     if not isinstance(value, Table):
         value = Table(self.layout.meta, value)
     part_info = self.run_hook(self.ReportOutports, self.create_part_tasks())
     part_info = self.run_hook(
         self.Layout, self.create_part_tasks(), part_info, value)
     layout_table = Table(self.layout.meta)
     for name, layout_infos in LayoutInfo.filter_parts(part_info).items():
         assert len(layout_infos) == 1, \
             "%s returned more than 1 layout infos" % name
         layout_info = layout_infos[0]
         row = [name, layout_info.mri, layout_info.x, layout_info.y,
                layout_info.visible]
         layout_table.append(row)
     self.layout.set_value(layout_table)
Ejemplo n.º 8
0
    def table_from_list(self, int_values):
        table = Table(self.meta)
        if self.fields:
            nconsume = self._calc_nconsume()

            for i in range(int(len(int_values) / nconsume)):
                int_value = 0
                for c in range(nconsume):
                    int_value += int(int_values[i*nconsume+c]) << (32 * c)
                row = []
                for name, (bits_hi, bits_lo) in self.fields.items():
                    mask = 2 ** (bits_hi + 1) - 1
                    field_value = (int_value & mask) >> bits_lo
                    row.append(field_value)
                table.append(row)
        return table
 def test_list_from_table(self):
     table = Table(self.meta)
     table.append([32, True, True, 4294967295])
     table.append([0, True, False, 1])
     table.append([0, False, False, 0])
     l = self.o.list_from_table(table)
     assert l == ([32, 0x10001, 4294967295, 0, 0x1, 1, 0, 0x0, 0])
Ejemplo n.º 10
0
 def do_load(self, design):
     filename = self._validated_config_filename(design)
     with open(filename, "r") as f:
         text = f.read()
     structure = json_decode(text)
     # Set the layout table
     layout_table = Table(self.layout.meta)
     for part_name, part_structure in structure.get("layout", {}).items():
         layout_table.append([
             part_name, "", part_structure["x"], part_structure["y"],
             part_structure["visible"]])
     self.set_layout(layout_table)
     # Set the exports table
     exports_table = Table(self.exports.meta)
     for name, export_name in structure.get("exports", {}).items():
         exports_table.append([name, export_name])
     self.exports.set_value(exports_table)
     # Run the load hook to get parts to load their own structure
     self.run_hook(self.Load,
                   self.create_part_contexts(only_visible=False),
                   structure)
     self._mark_clean(design)
 def test_list_from_table(self):
     table = Table(self.meta)
     table.append([32, True, True, 4294967295])
     table.append([0, True, False, 1])
     table.append([0, False, False, 0])
     l = self.o.list_from_table(table)
     self.assertEqual(l,
                      [32, 0x10001, 4294967295,
                      0, 0x1, 1,
                      0, 0x0, 0])
Ejemplo n.º 12
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_string_access(self):
        self.assertEqual(self.t.e1, self.t["e1"])
        self.assertEqual(self.t.e2, self.t["e2"])

    def test_string_setters(self):
        self.t["e2"] = [4]
        self.assertEqual(list(self.t.e2), [4])

    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])
Ejemplo n.º 13
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):
        assert [1, 2, 3] == self.t[0]

    def test_string_access(self):
        assert self.t.e1 == self.t["e1"]
        assert self.t.e2 == self.t["e2"]

    def test_string_setters(self):
        self.t["e2"] = [4]
        assert list(self.t.e2) == [4]

    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]
        assert [7] == self.t.e1
        assert [8] == self.t.e2
        assert [9] == self.t.e3

    def test_row_assignment_bad_row_raises(self):
        with self.assertRaises(ValueError):
            self.t[0] = [7, 8]
        assert [1] == self.t.e1
        assert [2] == self.t.e2
        assert [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])
        assert [1, 11, 21] == list(self.t.e1)
        assert [2, 12, 22] == list(self.t.e2)
        assert [3, 13, 23] == list(self.t.e3)

    def test_row_append_bad_row_raises(self):
        with self.assertRaises(ValueError):
            self.t.append([11, 12])
        with 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])
Ejemplo n.º 14
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_string_access(self):
        self.assertEqual(self.t.e1, self.t["e1"])
        self.assertEqual(self.t.e2, self.t["e2"])

    def test_string_setters(self):
        self.t["e2"] = [4]
        self.assertEqual(list(self.t.e2), [4])

    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])