diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-03-24 13:22:28 -0500 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-03-24 13:22:28 -0500 |
commit | 56665b7b5c89021b848dfe404ff974ec6ebd607f (patch) | |
tree | 70e77e9c10430a196f0b3ee0a7ff7f853e071d72 /crystal.py | |
parent | 95c850ab09dcf10580f6dd57115e4b09fe78321a (diff) |
AsmList and more testing
original-commit-id: 98c1b528942b4ca7fa29c7ae31345add5ea3ff01
Diffstat (limited to 'crystal.py')
-rw-r--r-- | crystal.py | 61 |
1 files changed, 54 insertions, 7 deletions
@@ -420,15 +420,11 @@ def map_name_cleaner(input): class RomStr(str): """simple wrapper to prevent a giant rom from being shown on screen""" + def length(self): + """len(self)""" + return len(self) def __repr__(self): return "RomStr(too long)" - -def grouper(some_list, count=2): - """splits a list into sublists - given: [1, 2, 3, 4] - returns: [[1, 2], [3, 4]]""" - return [some_list[i:i+count] for i in range(0, len(some_list), count)] - def load_rom(filename="../baserom.gbc"): """loads bytes into memory""" global rom @@ -437,6 +433,26 @@ def load_rom(filename="../baserom.gbc"): file_handler.close() return rom +class AsmList(list): + """simple wrapper to prevent all asm lines from being shown on screen""" + def length(self): + """len(self)""" + return len(self) + def __repr__(self): + return "AsmList(too long)" +def load_asm(filename="../main.asm"): + """loads the asm source code into memory""" + global asm + asm = open(filename, "r").read().split("\n") + asm = AsmList(asm) + return asm + +def grouper(some_list, count=2): + """splits a list into sublists + given: [1, 2, 3, 4] + returns: [[1, 2], [3, 4]]""" + return [some_list[i:i+count] for i in range(0, len(some_list), count)] + def rom_interval(offset, length, strings=True, debug=True): """returns hex values for the rom starting at offset until offset+length""" global rom @@ -4426,6 +4442,12 @@ class TestCram(unittest.TestCase): rom = self.rom self.assertEqual(len(rom), 2097152) self.failUnless(isinstance(rom, RomStr)) + def test_load_asm(self): + asm = load_asm() + joined_lines = "\n".join(asm) + self.failUnless("SECTION" in joined_lines) + self.failUnless("bank" in joined_lines) + self.failUnless(isinstance(asm, AsmList)) def test_rom_file_existence(self): "ROM file must exist" self.failUnless("baserom.gbc" in os.listdir("../")) @@ -4551,6 +4573,31 @@ class TestRomStr(unittest.TestCase): def test_conversion(self): "check if RomStr() -> str() works" self.assertEquals(str(self.sample), self.sample_text) + def test_inheritance(self): + self.failUnless(issubclass(RomStr, str)) + def test_length(self): + self.assertEquals(len(self.sample_text), len(self.sample)) + self.assertEquals(len(self.sample_text), self.sample.length()) + self.assertEquals(len(self.sample), self.sample.length()) +class TestAsmList(unittest.TestCase): + """AsmList is a class that should act exactly like list() + except that it never shows the contents of its list + unless explicitly forced""" + def test_equals(self): + base = [1,2,3] + asm = AsmList(base) + self.assertEquals(base, asm) + self.assertEquals(asm, base) + self.assertEquals(base, list(asm)) + def test_inheritance(self): + self.failUnless(issubclass(AsmList, list)) + def test_length(self): + base = range(0, 10) + asm = AsmList(base) + self.assertEquals(len(base), len(asm)) + self.assertEquals(len(base), asm.length()) + 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 |