예제 #1
0
    def test_model_to_view(self):
        root = Controller.RootController('root')
        value_interface = TestValueInterface()
        optional_interface = TestOptionalInterface()
        list_instance_factory = TestListInstanceFactory()

        controller = Controller.ListController('test', root, value_interface,
                                               None, list_instance_factory, 0)

        with self.assertRaises(AssertionError):
            controller.model_to_view({})

        controller = Controller.ListController('test', root, value_interface,
                                               optional_interface,
                                               list_instance_factory, 0)

        controller.model_to_view({})
        self.assertFalse(optional_interface.val)

        controller.model_to_view({'test': []})
        self.assertEqual(value_interface.val, '0')
        self.assertEqual(len(list_instance_factory.instances), 0)
        self.assertTrue(optional_interface.val)

        controller.model_to_view({'test': ['1', '2', '3']})
        self.assertEqual(value_interface.val, '3')
        self.assertEqual(len(list_instance_factory.instances), 3)
        self.assertTrue(optional_interface.val)
        self.assertEqual(list_instance_factory.values[0].val, '1')
        self.assertEqual(list_instance_factory.values[1].val, '2')
        self.assertEqual(list_instance_factory.values[2].val, '3')
예제 #2
0
    def test_init(self):
        root = Controller.RootController('root')
        value_interface = TestValueInterface()
        optional_interface = TestOptionalInterface()

        Controller.ListController('test', root, value_interface, None,
                                  TestListInstanceFactory(), 1)
        self.assertEqual(value_interface.val, '1')

        value_interface.val = 42
        Controller.ListController('test', root,
                                  value_interface, optional_interface,
                                  TestListInstanceFactory(), 0)
        self.assertEqual(value_interface.val, 42)
    def test_view_to_model_list(self):
        root = Controller.RootController('root')
        list_value_interface = TestValueInterface()
        value_interface = TestValueInterface()
        list_instance_factory = TestListInstanceFactory()

        container = Controller.ContainerController('test', root, None)
        list_controller = Controller.ListController('test_list', container,
                                                    list_value_interface, None,
                                                    list_instance_factory, 0)

        self.assertEqual(container.view_to_model(), {'test_list': []})

        list_value_interface.val = 1
        list_controller.event_handler()
        list_instance_factory.values[0].val = 1

        self.assertEqual(container.view_to_model(), {'test_list': [1]})

        container.model_to_view({'test': {'test_list': [1]}})
        self.assertEqual(list_value_interface.val, '1')
        self.assertEqual(len(list_instance_factory.instances), 1)
        self.assertEqual(list_instance_factory.values[0].val, 1)

        Controller.ValueController('test_val', container, value_interface,
                                   None, Converter.Str(0, 'default'))
        value_interface.val = 'test'
        self.assertEqual(container.view_to_model(), {
            'test_list': [1],
            'test_val': 'test'
        })
예제 #4
0
    def test_add_controller(self):
        root = Controller.RootController('root')
        value_interface = TestValueInterface()

        controller = Controller.ListController('test', root,
                                               value_interface, None,
                                               TestListInstanceFactory(), 0)
        self.assertEqual(len(controller._controllers), 0)
        controller.add_controller('sub', controller)
        self.assertEqual(len(controller._controllers), 1)
예제 #5
0
 def create_list_controller(self, type_: oer.Type,
                            value_interface: ValueInterface,
                            optional_interface: Optional[OptionalInterface],
                            list_instance_factory, minimum_elements: int):
     if isinstance(type_, oer.SequenceOf) or isinstance(type_, oer.SetOf):
         controller = Controller.ListController(type_.name, self._parent,
                                                value_interface,
                                                optional_interface,
                                                list_instance_factory,
                                                minimum_elements)
         self.__register_events(controller, value_interface,
                                optional_interface)
     else:
         raise Exception(f"Unknown type for ControllerFactory: {type_}")
예제 #6
0
    def test_view_to_model(self):
        root = Controller.RootController('root')
        value_interface = TestValueInterface()
        optional_interface = TestOptionalInterface()
        list_instance_factory = TestListInstanceFactory()

        controller = Controller.ListController('test', root, value_interface,
                                               optional_interface,
                                               list_instance_factory, 0)

        optional_interface.val = False
        self.assertIsNone(controller.view_to_model())

        optional_interface.val = True
        self.assertEqual(controller.view_to_model(), [])

        value_interface.val = 2
        controller.event_handler()
        list_instance_factory.values[0].val = 1
        list_instance_factory.values[1].val = 2
        self.assertEqual(controller.view_to_model(), [1, 2])
예제 #7
0
    def test_event_handlers(self):
        root = Controller.RootController('root')
        value_interface = TestValueInterface()
        optional_interface = TestOptionalInterface()
        list_instance_factory = TestListInstanceFactory()

        controller = Controller.ListController('test', root, value_interface,
                                               optional_interface,
                                               list_instance_factory, 0)
        self.assertEqual(len(list_instance_factory.instances), 0)

        value_interface.val = 2
        controller.event_handler()
        self.assertEqual(len(list_instance_factory.instances), 2)

        optional_interface.val = False
        controller.optional_handler()
        self.assertEqual(len(list_instance_factory.instances), 0)
        self.assertEqual(value_interface.val, 2)

        optional_interface.val = True
        controller.optional_handler()
        self.assertEqual(len(list_instance_factory.instances), 2)
        self.assertEqual(value_interface.val, 2)