Ejemplo n.º 1
0
 def test_get_valid_actions_with_reverse(self):
     valid_actions = types.get_valid_actions(wt_types.COMMON_NAME_MAPPING,
                                             wt_types.COMMON_TYPE_SIGNATURE,
                                             wt_types.BASIC_TYPES)
     assert valid_actions['<n,c>'] == ['<n,c> -> [<<#1,#2>,<#2,#1>>, <c,n>]',
                                       '<n,c> -> fb:cell.cell.num2',
                                       '<n,c> -> fb:cell.cell.number']
Ejemplo n.º 2
0
 def get_valid_actions(self) -> Dict[str, List[str]]:
     return types.get_valid_actions(
         self.get_name_mapping(),
         self.get_type_signatures(),
         self.get_basic_types(),
         valid_starting_types=self.get_valid_starting_types(),
         num_nested_lambdas=self._num_nested_lambdas)
Ejemplo n.º 3
0
 def test_get_valid_actions_with_reverse(self):
     valid_actions = types.get_valid_actions(wt_types.COMMON_NAME_MAPPING,
                                             wt_types.COMMON_TYPE_SIGNATURE,
                                             wt_types.BASIC_TYPES)
     assert valid_actions['<n,c>'] == ['<n,c> -> [<<#1,#2>,<#2,#1>>, <c,n>]',
                                       '<n,c> -> fb:cell.cell.num2',
                                       '<n,c> -> fb:cell.cell.number']
Ejemplo n.º 4
0
 def get_valid_actions(self) -> Dict[str, List[str]]:
     if not self._valid_actions:
         multi_match_mapping = self.get_multi_match_mapping()
         self._valid_actions = types.get_valid_actions(
             self.get_name_mapping(),
             self.get_type_signatures(),
             self.get_basic_types(),
             valid_starting_types=self.get_valid_starting_types(),
             num_nested_lambdas=self._num_nested_lambdas,
             multi_match_mapping=multi_match_mapping)
     return self._valid_actions
Ejemplo n.º 5
0
 def test_get_valid_actions(self):
     type_r = NamedBasicType("R")
     type_d = NamedBasicType("D")
     type_e = NamedBasicType("E")
     name_mapping = {'sample_function': 'F'}
     # <e,<r,<d,r>>>
     type_signatures = {'F': ComplexType(type_e, ComplexType(type_r, ComplexType(type_d, type_r)))}
     basic_types = {type_r, type_d, type_e}
     valid_actions = types.get_valid_actions(name_mapping, type_signatures, basic_types)
     assert len(valid_actions) == 3
     assert valid_actions["<e,<r,<d,r>>>"] == ["<e,<r,<d,r>>> -> sample_function"]
     assert valid_actions["r"] == ["r -> [<e,<r,<d,r>>>, e, r, d]"]
     assert valid_actions["@start@"] == ["@start@ -> d", "@start@ -> e", "@start@ -> r"]
Ejemplo n.º 6
0
 def test_get_valid_actions(self):
     type_r = NamedBasicType("R")
     type_d = NamedBasicType("D")
     type_e = NamedBasicType("E")
     name_mapping = {'sample_function': 'F'}
     # <e,<r,<d,r>>>
     type_signatures = {'F': ComplexType(type_e, ComplexType(type_r, ComplexType(type_d, type_r)))}
     basic_types = {type_r, type_d, type_e}
     valid_actions = types.get_valid_actions(name_mapping, type_signatures, basic_types)
     assert len(valid_actions) == 3
     assert valid_actions["<e,<r,<d,r>>>"] == ["<e,<r,<d,r>>> -> sample_function"]
     assert valid_actions["r"] == ["r -> [<e,<r,<d,r>>>, e, r, d]"]
     assert valid_actions["@start@"] == ["@start@ -> d", "@start@ -> e", "@start@ -> r"]
Ejemplo n.º 7
0
 def test_get_valid_actions_with_placeholder_type(self):
     type_r = NamedBasicType("R")
     type_d = NamedBasicType("D")
     type_e = NamedBasicType("E")
     name_mapping = {'sample_function': 'F'}
     # <#1,#1>
     type_signatures = {'F': UnaryOpType()}
     basic_types = {type_r, type_d, type_e}
     valid_actions = types.get_valid_actions(name_mapping, type_signatures, basic_types)
     assert len(valid_actions) == 5
     assert valid_actions["<#1,#1>"] == ["<#1,#1> -> sample_function"]
     assert valid_actions["e"] == ["e -> [<#1,#1>, e]"]
     assert valid_actions["r"] == ["r -> [<#1,#1>, r]"]
     assert valid_actions["d"] == ["d -> [<#1,#1>, d]"]
     assert valid_actions["@start@"] == ["@start@ -> d", "@start@ -> e", "@start@ -> r"]
Ejemplo n.º 8
0
 def test_get_valid_actions_with_placeholder_type(self):
     type_r = NamedBasicType("R")
     type_d = NamedBasicType("D")
     type_e = NamedBasicType("E")
     name_mapping = {'sample_function': 'F'}
     # <#1,#1>
     type_signatures = {'F': UnaryOpType()}
     basic_types = {type_r, type_d, type_e}
     valid_actions = types.get_valid_actions(name_mapping, type_signatures, basic_types)
     assert len(valid_actions) == 5
     assert valid_actions["<#1,#1>"] == ["<#1,#1> -> sample_function"]
     assert valid_actions["e"] == ["e -> [<#1,#1>, e]"]
     assert valid_actions["r"] == ["r -> [<#1,#1>, r]"]
     assert valid_actions["d"] == ["d -> [<#1,#1>, d]"]
     assert valid_actions["@start@"] == ["@start@ -> d", "@start@ -> e", "@start@ -> r"]
Ejemplo n.º 9
0
 def test_get_valid_actions_with_any_type(self):
     type_r = NamedBasicType("R")
     type_d = NamedBasicType("D")
     type_e = NamedBasicType("E")
     name_mapping = {'sample_function': 'F'}
     # The purpose of this test is to ensure that ANY_TYPE gets substituted by every possible basic type,
     # to simulate an intermediate step while getting actions for a placeholder type.
     # I do not foresee defining a function type with ANY_TYPE. We should just use a ``PlaceholderType``
     # instead.
     # <?,r>
     type_signatures = {'F': ComplexType(ANY_TYPE, type_r)}
     basic_types = {type_r, type_d, type_e}
     valid_actions = types.get_valid_actions(name_mapping, type_signatures, basic_types)
     assert len(valid_actions) == 5
     assert valid_actions["<d,r>"] == ["<d,r> -> sample_function"]
     assert valid_actions["<e,r>"] == ["<e,r> -> sample_function"]
     assert valid_actions["<r,r>"] == ["<r,r> -> sample_function"]
     assert valid_actions["r"] == ["r -> [<d,r>, d]", "r -> [<e,r>, e]", "r -> [<r,r>, r]"]
     assert valid_actions["@start@"] == ["@start@ -> d", "@start@ -> e", "@start@ -> r"]
Ejemplo n.º 10
0
 def test_get_valid_actions_with_any_type(self):
     type_r = NamedBasicType("R")
     type_d = NamedBasicType("D")
     type_e = NamedBasicType("E")
     name_mapping = {'sample_function': 'F'}
     # The purpose of this test is to ensure that ANY_TYPE gets substituted by every possible basic type,
     # to simulate an intermediate step while getting actions for a placeholder type.
     # I do not foresee defining a function type with ANY_TYPE. We should just use a ``PlaceholderType``
     # instead.
     # <?,r>
     type_signatures = {'F': ComplexType(ANY_TYPE, type_r)}
     basic_types = {type_r, type_d, type_e}
     valid_actions = types.get_valid_actions(name_mapping, type_signatures, basic_types)
     assert len(valid_actions) == 5
     assert valid_actions["<d,r>"] == ["<d,r> -> sample_function"]
     assert valid_actions["<e,r>"] == ["<e,r> -> sample_function"]
     assert valid_actions["<r,r>"] == ["<r,r> -> sample_function"]
     assert valid_actions["r"] == ["r -> [<d,r>, d]", "r -> [<e,r>, e]", "r -> [<r,r>, r]"]
     assert valid_actions["@start@"] == ["@start@ -> d", "@start@ -> e", "@start@ -> r"]
Ejemplo n.º 11
0
 def test_conjunction_maps_to_correct_actions(self):
     valid_actions = base_types.get_valid_actions({'and': 'O'},
                                                  {'O': CONJUNCTION_TYPE},
                                                  {CELL_TYPE},
                                                  {CELL_TYPE})
     assert 'c -> [<#1,<#1,#1>>, c, c]' in valid_actions['c']
Ejemplo n.º 12
0
 def test_conjunction_maps_to_correct_actions(self):
     valid_actions = base_types.get_valid_actions({'and': 'O'},
                                                  {'O': CONJUNCTION_TYPE},
                                                  {CELL_TYPE}, {CELL_TYPE})
     assert 'c -> [<#1,<#1,#1>>, c, c]' in valid_actions['c']
 def test_conjunction_maps_to_correct_actions(self):
     valid_actions = base_types.get_valid_actions({u'and': u'O'},
                                                  {u'O': CONJUNCTION_TYPE},
                                                  set([CELL_TYPE]),
                                                  set([CELL_TYPE]))
     assert u'c -> [<#1,<#1,#1>>, c, c]' in valid_actions[u'c']
Ejemplo n.º 14
0
 def get_valid_actions(self) -> Dict[str, List[str]]:
     return types.get_valid_actions(self.get_name_mapping(),
                                    self.get_type_signatures(),
                                    self.get_basic_types(),
                                    valid_starting_types=self.get_valid_starting_types(),
                                    num_nested_lambdas=self._num_nested_lambdas)