diff options
Diffstat (limited to 'extras')
| -rw-r--r-- | extras/crystal.py | 116 | 
1 files changed, 71 insertions, 45 deletions
| diff --git a/extras/crystal.py b/extras/crystal.py index 71a30ddad..786d7899a 100644 --- a/extras/crystal.py +++ b/extras/crystal.py @@ -477,6 +477,7 @@ def load_map_group_offsets():      """reads the map group table for the list of pointers"""      global map_group_pointer_table, map_group_count, map_group_offsets      global rom +    map_group_offsets = [] #otherwise this method can only be used once      data = rom_interval(map_group_pointer_table, map_group_count*2, strings=False)      data = grouper(data)      for pointer_parts in data: @@ -4489,14 +4490,20 @@ class TestCram(unittest.TestCase):          for address in [0x4000, 0x5000, 0x6000, 0x7000]:              self.assertRaises(Exception, calculate_bank, address)      def test_calculate_pointer(self): -        pass #or raise NotImplementedError, bryan_message -    def test_calculate_pointer_from_bytes_at(self): -        pass #or raise NotImplementedError, bryan_message +        #for offset <= 0x4000 +        self.assertEqual(calculate_pointer(0x0000), 0x0000) +        self.assertEqual(calculate_pointer(0x3FFF), 0x3FFF) +        #for 0x4000 <= offset <= 0x7FFFF +        self.assertEqual(calculate_pointer(0x430F, bank=5), 0x1430F) +        #for offset >= 0x7FFF +        self.assertEqual(calculate_pointer(0x8FFF, bank=6), calculate_pointer(0x8FFF, bank=7)) +    #def test_calculate_pointer_from_bytes_at(self): +    #    pass #or raise NotImplementedError, bryan_message      def test_rom_text_at(self):          self.assertEquals(rom_text_at(0x112116, 8), "HTTP/1.0") -    def test_find_all_text_pointers_in_script_engine_script(self): -        "finds text pointers from scripts" -        pass #or raise NotImplementedError, bryan_message +    #def test_find_all_text_pointers_in_script_engine_script(self): +    #    "finds text pointers from scripts" +    #    pass #or raise NotImplementedError, bryan_message      def test_translate_command_byte(self):          self.failUnless(translate_command_byte(crystal=0x0) == 0x0)          self.failUnless(translate_command_byte(crystal=0x10) == 0x10) @@ -4528,6 +4535,16 @@ class TestCram(unittest.TestCase):          self.assertEqual(map_name(2, 7), "Mahogany Town")          self.assertEqual(map_name(3, 0x34), "Ilex Forest")          self.assertEqual(map_name(7, 0x11), "Cerulean City") +    def test_load_map_group_offsets(self): +        addresses = load_map_group_offsets() +        self.assertEqual(len(addresses), 26, msg="there should be 26 map groups") +        addresses = load_map_group_offsets() +        self.assertEqual(len(addresses), 26, msg="there should still be 26 map groups") +        self.assertIn(0x94034, addresses) +        for address in addresses: +            self.assertGreaterEqual(address, 0x4000) +            self.failIf(0x4000 <= address <= 0x7FFF) +            self.failIf(address <= 0x4000)  class TestIntervalMap(unittest.TestCase):      def test_intervals(self):          i = IntervalMap() @@ -4599,26 +4616,26 @@ class TestAsmList(unittest.TestCase):          self.assertEquals(len(base), len(list(asm)))          self.assertEquals(len(asm), asm.length())  class TestMapParsing(unittest.TestCase): -    def test_parse_warp_bytes(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_xy_trigger_bytes(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_signpost_bytes(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_people_event_bytes(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_trainer_header_at(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_map_header_at(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_second_map_header_at(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_map_event_header_at(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_map_script_header_at(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_map_header_by_id(self): -        pass #or raise NotImplementedError, bryan_message +    #def test_parse_warp_bytes(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_xy_trigger_bytes(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_signpost_bytes(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_people_event_bytes(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_trainer_header_at(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_map_header_at(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_second_map_header_at(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_map_event_header_at(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_map_script_header_at(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_map_header_by_id(self): +    #    pass #or raise NotImplementedError, bryan_message      def test_parse_all_map_headers(self):          global parse_map_header_at, counter          counter = 0 @@ -4634,29 +4651,31 @@ class TestMapParsing(unittest.TestCase):          self.assertEqual(counter, 388)          parse_map_header_at = temp  class TestTextScript(unittest.TestCase): -    def test_to_asm(self): -        pass #or raise NotImplementedError, bryan_message -    def test_find_addresses(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_text_at(self): -        pass #or raise NotImplementedError, bryan_message -    def test_to_asm_at(self): -        pass #or raise NotImplementedError, bryan_message +    """for testing 'in-script' commands, etc.""" +    #def test_to_asm(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_find_addresses(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_text_at(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_to_asm_at(self): +    #    pass #or raise NotImplementedError, bryan_message  class TestEncodedText(unittest.TestCase): -    def test_to_asm(self): -        pass #or raise NotImplementedError, bryan_message -    def test_process_00_subcommands(self): -        pass #or raise NotImplementedError, bryan_message -    def test_from_bytes(self): -        pass #or raise NotImplementedError, bryan_message -    def test_parse_text_at(self): -        pass #or raise NotImplementedError, bryan_message +    """for testing chars-table encoded text chunks""" +    #def test_to_asm(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_process_00_subcommands(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_from_bytes(self): +    #    pass #or raise NotImplementedError, bryan_message +    #def test_parse_text_at(self): +    #    pass #or raise NotImplementedError, bryan_message  class TestScript(unittest.TestCase):      """for testing parse_script_engine_script_at      and script parsing in general.      Script should be a class?""" -    def test_parse_script_engine_script_at(self): -        pass #or raise NotImplementedError, bryan_message +    #def test_parse_script_engine_script_at(self): +    #    pass #or raise NotImplementedError, bryan_message  class TestMetaTesting(unittest.TestCase):      """test whether or not i am finding at least      some of the tests in this file""" @@ -4778,7 +4797,14 @@ def find_untested_methods():      return untested  def report_untested():      untested = find_untested_methods() -    output = "NOT TESTED: " + str(untested) +    output = "NOT TESTED: [" +    first = True +    for name in untested: +        if first: +            output += name +            first = False +        else: output += ", "+name +    output += "]"      return output  #### ways to run this file #### | 
