示例#1
0
    def test_str_to_bytes(self):
        with_char = Retriever('not-a-filename', '',
                              DataType('str16'))  # Should get \x00 trail
        without_char = Retriever(
            'filename', '', DataType('str16'))  # Should not get \x00 trail

        s = 'Test String'
        self.assertEqual(str_to_bytes(s, with_char), b'Test String\x00')
        self.assertEqual(str_to_bytes(s, without_char), b'Test String')
示例#2
0
    def from_structure(cls, section_name, structure):
        retrievers = []
        for name, attr in structure.get('retrievers').items():
            retrievers.append(Retriever.from_structure(name, attr))

        structs = model_dict_from_structure(structure)
        return cls(section_name, retrievers, structs)
    def from_structure(cls, name, structure) -> AoE2StructModel:
        retrievers = []
        for retriever_name, attr in structure.get('retrievers').items():
            retrievers.append(Retriever.from_structure(retriever_name, attr))
        structs = model_dict_from_structure(structure)

        return cls(name, retrievers, structs)
示例#4
0
    def from_structure(cls, section_name, structure):
        retriever_map = {}
        for name, attr in structure.get('retrievers').items():
            retriever_map[name] = Retriever.from_structure(name, attr)

        structs = model_dict_from_structure(structure)
        return cls(section_name, retriever_map, structs)
    def from_structure(cls, name, structure) -> AoE2StructModel:
        retriever_map = {}
        for retriever_name, attr in structure.get('retrievers').items():
            retriever_map[retriever_name] = Retriever.from_structure(
                retriever_name, attr)
        structs = model_dict_from_structure(structure)

        return cls(name, retriever_map, structs)
    def test_vorl(self):
        # Test repeat == 1 && len(value) == 1
        retriever = Retriever('name', 0, DataType('1', repeat=1))
        self.assertEqual(vorl(retriever, [10]), 10)

        # Test repeat > 1 && len(value) == 1
        retriever = Retriever('name', 0, DataType('1', repeat=2))
        self.assertEqual(vorl(retriever, [10]), [10])

        # Test repeat == 1 && len(value) > 1
        retriever = Retriever('name', 0, DataType('1', repeat=1))
        self.assertEqual(vorl(retriever, [10, 20]), [10, 20])

        # Test repeat > 1 && len(value) > 1
        retriever = Retriever('name', 0, DataType('1', repeat=2))
        self.assertEqual(vorl(retriever, [10, 20]), [10, 20])

        # Test repeat == 1 && is_list && len(value) == 1
        retriever = Retriever('name', 0, DataType('1', repeat=1), is_list=True)
        self.assertEqual(vorl(retriever, [10]), [10])

        # Test repeat == 1 && not is_list && len(value) == 1
        retriever = Retriever('name',
                              0,
                              DataType('1', repeat=1),
                              is_list=False)
        self.assertEqual(vorl(retriever, [10]), 10)
def handle_retriever_dependency(retriever: Retriever, state, section, sections):
    on_x = f'on_{state}'
    if not hasattr(retriever, on_x):
        return

    retriever_event = getattr(retriever, on_x)  # construct, commit or refresh

    action = retriever_event.dependency_action

    if action == DependencyAction.REFRESH_SELF:
        execute_refresh_action(retriever, section, sections)
    elif action == DependencyAction.REFRESH:
        refresh_targets(retriever_event, section, sections)
    elif action in [DependencyAction.SET_VALUE, DependencyAction.SET_REPEAT]:
        value = execute_dependency_eval(retriever_event, section, sections)
        if action == DependencyAction.SET_VALUE:
            retriever.data = value
        elif action == DependencyAction.SET_REPEAT:
            retriever.datatype.repeat = value
示例#8
0
 def test_parse_val_to_bytes(self):
     retriever = Retriever(name='_',
                           default_value=0,
                           datatype=DataType("u16"))
     self.assertEqual(parse_val_to_bytes(retriever, 1), b'\x01\x00')
     retriever.datatype = DataType("s16")
     self.assertEqual(parse_val_to_bytes(retriever, -1), b'\xff\xff')
     retriever.datatype = DataType("str16")
     self.assertEqual(parse_val_to_bytes(retriever, "Hello World"),
                      b'\x0c\x00Hello World\x00')
     retriever.datatype = DataType("c20")
     self.assertEqual(parse_val_to_bytes(retriever, "Hello World"),
                      b'Hello World')
     retriever.datatype = DataType("20")
     self.assertEqual(
         parse_val_to_bytes(retriever, b'Direct bytes\x11\xff'),
         b'Direct bytes\x11\xff')
     retriever.datatype = DataType("f32")
     self.assertEqual(parse_val_to_bytes(retriever, 3.14),
                      b'\xc3\xf5\x48\x40')