class VariablesControllerTest(unittest.TestCase): def setUp(self): self.tcf = TestCaseFile() self._add_var('${foo}', 'foo') self._add_var('@{bar}', ['b', 'a', 'r']) self.ctrl = VariableTableController(TestCaseFileController(self.tcf), self.tcf.variable_table) def test_creation(self): assert_equal(self.ctrl[0].name, '${foo}') assert_equal(self.ctrl[1].name, '@{bar}') def test_move_up(self): self.ctrl.move_up(1) assert_true(self.ctrl.dirty) assert_equal(self.ctrl[0].name, '@{bar}') assert_equal(self.ctrl[1].name, '${foo}') def test_move_down(self): self.ctrl.move_down(0) assert_true(self.ctrl.dirty) assert_equal(self.ctrl[0].name, '@{bar}') assert_equal(self.ctrl[1].name, '${foo}') def test_moving_first_item_up_does_nothing(self): self.ctrl.move_up(0) assert_false(self.ctrl.dirty) assert_equal(self.ctrl[0].name, '${foo}') def test_moving_last_item_down_does_nothing(self): self.ctrl.move_down(1) assert_false(self.ctrl.dirty) assert_equal(self.ctrl[1].name, '@{bar}') def _add_var(self, name, value): self.tcf.variable_table.add(name, value) def test_adding_scalar(self): self.ctrl.add_variable('${blaa}', 'value') assert_true(self.ctrl.dirty) self._assert_var_in_model(2, '${blaa}', ['value']) def test_editing(self): self.ctrl[0].set_value('${blaa}', 'quux') self._assert_var_in_ctrl(0, '${blaa}', ['quux']) self.ctrl[1].set_value('@{listvar}', ['a', 'b', 'c']) self._assert_var_in_ctrl(1, '@{listvar}', ['a', 'b', 'c']) assert_true(self.ctrl.dirty) def _assert_var_in_ctrl(self, index, name, value): assert_equal(self.ctrl[index].name, name) assert_equal(self.ctrl[index].value, value) def _assert_var_in_model(self, index, name, value): assert_equal(self.tcf.variable_table.variables[index].name, name) assert_equal(self.tcf.variable_table.variables[index].value, value)