def test_single_list(self): # Differs from test_append in that append(float) doesn't match bytearray mapping = self.parse_and_solve(""" class `~unknown1`(object): def append(self, v: float) -> NoneType """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["list"], mapping["~unknown1"]) self.assertItemsEqual(["float"], mapping["~unknown1.list.T"])
def test_float_list(self): mapping = self.parse_and_solve(""" class `~unknown1`(object): def append(self, v: ?) -> NoneType def __getitem__(self, i: int) -> float """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["list"], mapping["~unknown1"]) self.assertItemsEqual(["float"], mapping["~unknown1.list.T"])
def test_single_list(self): # Differs from test_append in that append(float) doesn't match bytearray mapping = self.parse_and_solve(""" class `~unknown1`(object): def append(self, _1: float) -> NoneType """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["list", "typing.MutableSequence", "typing.List"], mapping["~unknown1"]) self.assertItemsEqual(["float"], mapping["~unknown1.__builtin__.list._T"])
def test_float_list(self): mapping = self.parse_and_solve(""" class `~unknown1`(object): def append(self, _1: ?) -> NoneType def __getitem__(self, _1: int) -> float """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["list", "typing.List", "typing.MutableSequence"], mapping["~unknown1"]) self.assertItemsEqual(["float"], mapping["~unknown1.__builtin__.list._T"])
def test_list(self): mapping = self.parse_and_solve(""" class `~unknown2`(object): def append(self, v: `~unknown1`) -> NoneType def __getitem__(self, i: ?) -> `~unknown1` class `~unknown1`(object): def __add__(self: float, y: int) -> float def __add__(self: float, y: float) -> float """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["float"], mapping["~unknown1"]) self.assertItemsEqual(["list"], mapping["~unknown2"]) self.assertItemsEqual(["float"], mapping["~unknown2.__builtin__.list.T"])
def test_list(self): mapping = self.parse_and_solve( """ class `~unknown2`: def append(self, v: `~unknown1`) -> NoneType def __getitem__(self, i: ?) -> `~unknown1` class `~unknown1`: def __add__(self: float, y: int) -> float def __add__(self: float, y: float) -> float """ ) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["float"], mapping["~unknown1"]) self.assertItemsEqual(["list"], mapping["~unknown2"]) self.assertItemsEqual(["float"], mapping["~unknown2.list.T"])
def test_list(self): mapping = self.parse_and_solve(""" class `~unknown2`(object): def append(self, _1: `~unknown1`) -> NoneType def __getitem__(self, _1: ?) -> `~unknown1` class `~unknown1`(object): def __add__(self: float, _1: int) -> float def __add__(self: float, _1: float) -> float """) convert_structural.log_info_mapping(mapping) six.assertCountEqual(self, ["float"], mapping["~unknown1"]) six.assertCountEqual(self, ["list", "typing.List", "typing.MutableSequence"], mapping["~unknown2"]) six.assertCountEqual(self, ["float"], mapping["~unknown2.__builtin__.list._T"])
def test_unknown(self): mapping = self.parse_and_solve(""" class A(?): def f(self, x:?) -> ? class B(?): def f(self, x:int) -> ? class C(?): def f(self, x:?) -> int class D(?): def f(self, x:int) -> int class `~unknown1`(object): def f(self, x:?) -> ? def f(self, x:int) -> ? def f(self, x:?) -> int def f(self, x:int) -> int """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["A", "B", "C", "D"], mapping["~unknown1"])
def test_unknown(self): mapping = self.parse_and_solve(""" class A(?): def f(self, x:?) -> ? class B(?): def f(self, x:int) -> ? class C(?): def f(self, x:?) -> int class D(?): def f(self, x:int) -> int class `~unknown1`(object): def f(self, x:?) -> ? def f(self, x:int) -> ? def f(self, x:?) -> int def f(self, x:int) -> int """) convert_structural.log_info_mapping(mapping) self.assertItemsEqual(["A", "B", "C", "D"], mapping["~unknown1"])