def test_id(self): """ Ensure the header can find the NES keyword, otherwise Raise exception """ raw = 'NES\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' header, prog_rom, chr_rom = read_header(raw) self.assertEqual(header['ID'], 'NES') self.assertEqual(prog_rom, 0) self.assertEqual(chr_rom, 0) self.assertEqual(header['MAPPER'], 0) self.assertFalse(header['FOUR_SCREEN']) self.assertFalse(header['TRAINER']) self.assertFalse(header['BATTERY_BACK']) self.assertEqual(header['MIRRORING'], 'HORIZONTAL') self.assertFalse(header['PLAY_CHOICE_10']) self.assertFalse(header['VS_UNISYSTEM']) self.assertFalse(header['NES_2.0']) raw = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' with self.assertRaises(IOError): read_header(raw)
def test_nes_2_0(self): """ Ensure nes 2.0 can be set """ raw = 'NES\x1a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00' header, prog_rom, chr_rom = read_header(raw) self.assertEqual(header['ID'], 'NES') self.assertEqual(prog_rom, 0) self.assertEqual(chr_rom, 0) self.assertEqual(header['MAPPER'], 0) self.assertFalse(header['FOUR_SCREEN']) self.assertFalse(header['TRAINER']) self.assertFalse(header['BATTERY_BACK']) self.assertEqual(header['MIRRORING'], 'HORIZONTAL') self.assertFalse(header['PLAY_CHOICE_10']) self.assertFalse(header['VS_UNISYSTEM']) self.assertTrue(header['NES_2.0'])
def test_mirroring(self): """ Ensure mirroring can be set to vertical """ raw = 'NES\x1a\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00' header, prog_rom, chr_rom = read_header(raw) self.assertEqual(header['ID'], 'NES') self.assertEqual(prog_rom, 0) self.assertEqual(chr_rom, 0) self.assertEqual(header['MAPPER'], 0) self.assertFalse(header['FOUR_SCREEN']) self.assertFalse(header['TRAINER']) self.assertFalse(header['BATTERY_BACK']) self.assertEqual(header['MIRRORING'], 'VERTICAL') self.assertFalse(header['PLAY_CHOICE_10']) self.assertFalse(header['VS_UNISYSTEM']) self.assertFalse(header['NES_2.0'])
def test_prog_rom(self): """ Ensure all possible prog rom sizes work. """ prefix = 'NES\x1a' suffix = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' for i in range(0, 256): header, prog_rom, chr_rom = \ read_header(prefix + struct.pack('B', i) + suffix) self.assertEqual(header['ID'], 'NES') self.assertEqual(prog_rom, i) self.assertEqual(chr_rom, 0) self.assertEqual(header['MAPPER'], 0) self.assertFalse(header['FOUR_SCREEN']) self.assertFalse(header['TRAINER']) self.assertFalse(header['BATTERY_BACK']) self.assertEqual(header['MIRRORING'], 'HORIZONTAL') self.assertFalse(header['PLAY_CHOICE_10']) self.assertFalse(header['VS_UNISYSTEM']) self.assertFalse(header['NES_2.0'])
def test_mapper(self): """ Ensure all possible mappers work. """ prefix = 'NES\x1a\x00\x00' suffix = '\x00\x00\x00\x00\x00\x00\x00' for low in range(0, 16): for high in range(0, 16): mapper = high * 16 + low mapper_str = struct.pack( \ 'B', (low << 4)) + struct.pack('B', (high << 4)) header, prog_rom, chr_rom = \ read_header(prefix + mapper_str + suffix) self.assertEqual(header['ID'], 'NES') self.assertEqual(prog_rom, 0) self.assertEqual(chr_rom, 0) self.assertEqual(header['MAPPER'], mapper) self.assertFalse(header['FOUR_SCREEN']) self.assertFalse(header['TRAINER']) self.assertFalse(header['BATTERY_BACK']) self.assertEqual(header['MIRRORING'], 'HORIZONTAL') self.assertFalse(header['PLAY_CHOICE_10']) self.assertFalse(header['VS_UNISYSTEM']) self.assertFalse(header['NES_2.0'])