def test_from_block(self):
        block = Block()
        block.from_list([1] * 5)
        block.write_multi(1, 0x8000 | 0x2000 | (7 << 10) | 0x120, 2)
        block.write_multi(3, 0x4000 | (2 << 10) | 0x3f5, 2)

        arrangement = EbTileArrangement(2, 1)
        arrangement.from_block(block, 1)

        assert_true(arrangement[0, 0].is_vertically_flipped)
        assert_false(arrangement[0, 0].is_horizontally_flipped)
        assert_true(arrangement[0, 0].is_priority, True)
        assert_equal(arrangement[0, 0].subpalette, 7)
        assert_equal(arrangement[0, 0].tile, 0x120)

        assert_false(arrangement[1, 0].is_vertically_flipped)
        assert_true(arrangement[1, 0].is_horizontally_flipped)
        assert_false(arrangement[1, 0].is_priority)
        assert_equal(arrangement[1, 0].subpalette, 2)
        assert_equal(arrangement[1, 0].tile, 0x3f5)

        arrangement = EbTileArrangement(1, 2)
        arrangement.from_block(block, 1)

        assert_true(arrangement[0, 0].is_vertically_flipped)
        assert_false(arrangement[0, 0].is_horizontally_flipped)
        assert_true(arrangement[0, 0].is_priority, True)
        assert_equal(arrangement[0, 0].subpalette, 7)
        assert_equal(arrangement[0, 0].tile, 0x120)

        assert_false(arrangement[0, 1].is_vertically_flipped)
        assert_true(arrangement[0, 1].is_horizontally_flipped)
        assert_false(arrangement[0, 1].is_priority)
        assert_equal(arrangement[0, 1].subpalette, 2)
        assert_equal(arrangement[0, 1].tile, 0x3f5)
Exemple #2
0
    def test_from_block(self):
        block = Block()
        block.from_list([1] * 5)
        block.write_multi(1, 0x8000 | 0x2000 | (7 << 10) | 0x120, 2)
        block.write_multi(3, 0x4000 | (2 << 10) | 0x3F5, 2)

        arrangement = EbTileArrangement(2, 1)
        arrangement.from_block(block, 1)

        assert_true(arrangement[0, 0].is_vertically_flipped)
        assert_false(arrangement[0, 0].is_horizontally_flipped)
        assert_true(arrangement[0, 0].is_priority, True)
        assert_equal(arrangement[0, 0].subpalette, 7)
        assert_equal(arrangement[0, 0].tile, 0x120)

        assert_false(arrangement[1, 0].is_vertically_flipped)
        assert_true(arrangement[1, 0].is_horizontally_flipped)
        assert_false(arrangement[1, 0].is_priority)
        assert_equal(arrangement[1, 0].subpalette, 2)
        assert_equal(arrangement[1, 0].tile, 0x3F5)

        arrangement = EbTileArrangement(1, 2)
        arrangement.from_block(block, 1)

        assert_true(arrangement[0, 0].is_vertically_flipped)
        assert_false(arrangement[0, 0].is_horizontally_flipped)
        assert_true(arrangement[0, 0].is_priority, True)
        assert_equal(arrangement[0, 0].subpalette, 7)
        assert_equal(arrangement[0, 0].tile, 0x120)

        assert_false(arrangement[0, 1].is_vertically_flipped)
        assert_true(arrangement[0, 1].is_horizontally_flipped)
        assert_false(arrangement[0, 1].is_priority)
        assert_equal(arrangement[0, 1].subpalette, 2)
        assert_equal(arrangement[0, 1].tile, 0x3F5)
    def test_from_block(self):
        arrangement_item = EbTileArrangementItem()
        block = Block()
        block.from_list([3] * 3)

        block.write_multi(0, 0x8000 | 0x2000 | (7 << 10) | 0x120, 2)
        arrangement_item.from_block(block, 0)
        assert_true(arrangement_item.is_vertically_flipped)
        assert_false(arrangement_item.is_horizontally_flipped)
        assert_true(arrangement_item.is_priority, True)
        assert_equal(arrangement_item.subpalette, 7)
        assert_equal(arrangement_item.tile, 0x120)

        block.write_multi(1, 0x4000 | (2 << 10) | 0x3f5, 2)
        arrangement_item.from_block(block, 1)
        assert_false(arrangement_item.is_vertically_flipped)
        assert_true(arrangement_item.is_horizontally_flipped)
        assert_false(arrangement_item.is_priority)
        assert_equal(arrangement_item.subpalette, 2)
        assert_equal(arrangement_item.tile, 0x3f5)
Exemple #4
0
    def test_from_block(self):
        arrangement_item = EbTileArrangementItem()
        block = Block()
        block.from_list([3] * 3)

        block.write_multi(0, 0x8000 | 0x2000 | (7 << 10) | 0x120, 2)
        arrangement_item.from_block(block, 0)
        assert_true(arrangement_item.is_vertically_flipped)
        assert_false(arrangement_item.is_horizontally_flipped)
        assert_true(arrangement_item.is_priority, True)
        assert_equal(arrangement_item.subpalette, 7)
        assert_equal(arrangement_item.tile, 0x120)

        block.write_multi(1, 0x4000 | (2 << 10) | 0x3F5, 2)
        arrangement_item.from_block(block, 1)
        assert_false(arrangement_item.is_vertically_flipped)
        assert_true(arrangement_item.is_horizontally_flipped)
        assert_false(arrangement_item.is_priority)
        assert_equal(arrangement_item.subpalette, 2)
        assert_equal(arrangement_item.tile, 0x3F5)
Exemple #5
0
class TestBlock(BaseTestCase):
    def setup(self):
        self.block = Block()

    def teardown(self):
        del self.block

    def test_baseline(self):
        pass

    def test_empty(self):
        assert_equal(len(self.block), 0)
        assert_equal(len(self.block.data), 0)

    def test_from_file(self):
        self.block.from_file(os.path.join(TEST_DATA_DIR, "binaries", "1kb_null.bin"))
        assert_equal(len(self.block), 1024)
        assert_list_equal(self.block.to_list(), [0] * 1024)

    def test_from_file_unhappy(self):
        # Attempt to load a directory
        assert_raises(FileAccessError, self.block.from_file, TEST_DATA_DIR)
        # Attempt to load a nonexistent file
        assert_raises(FileAccessError, self.block.from_file, os.path.join(TEST_DATA_DIR, "doesnotexist.bin"))
        # Attempt to load a file in a nonexistent directory
        assert_raises(FileAccessError, self.block.from_file, os.path.join(TEST_DATA_DIR, "dne", "dne.bin"))

    def test_from_list(self):
        self.block.from_list([0, 1, 2, 3, 4, 5])
        assert_equal(len(self.block), 6)
        assert_list_equal(self.block.to_list(), [0, 1, 2, 3, 4, 5])

        self.block.from_list([])
        assert_equal(len(self.block), 0)
        assert_list_equal(self.block.to_list(), [])

        self.block.from_list([69])
        assert_equal(len(self.block), 1)
        assert_list_equal(self.block.to_list(), [69])

    def test_getitem(self):
        self.block.from_file(os.path.join(TEST_DATA_DIR, "binaries", "1kb_rand.bin"))

        assert_equal(self.block[0], 0x25)
        assert_equal(self.block[1023], 0x20)
        assert_equal(self.block[0x3e3], 0xf4)
        assert_equal(self.block[1023], self.block[-1])

        assert_raises(OutOfBoundsError, self.block.__getitem__, 1024)
        assert_raises(OutOfBoundsError, self.block.__getitem__, 9999)

    def test_getitem_slice(self):
        self.block.from_file(os.path.join(TEST_DATA_DIR, "binaries", "1kb_rand.bin"))

        assert_is_instance(self.block[0:1], Block)

        assert_list_equal(self.block[0:0].to_list(), [])
        assert_list_equal(self.block[0x25c:0x25c].to_list(), [])
        assert_list_equal(self.block[0x25c:0x25d].to_list(), [0xa0])
        assert_list_equal(self.block[0x25c:0x25c + 5].to_list(), [0xa0, 0x0b, 0x71, 0x5d, 0x91])
        assert_list_equal(self.block[0x25c:0x25c + 5].to_list(), [0xa0, 0x0b, 0x71, 0x5d, 0x91])
        assert_list_equal(self.block[1022:1024].to_list(), [0x10, 0x20])

        assert_raises(InvalidArgumentError, self.block.__getitem__, slice(0, -1))
        assert_raises(OutOfBoundsError, self.block.__getitem__, slice(-2, -1))
        assert_raises(InvalidArgumentError, self.block.__getitem__, slice(1024, 0))
        assert_raises(InvalidArgumentError, self.block.__getitem__, slice(1024, -1))
        assert_raises(InvalidArgumentError, self.block.__getitem__, slice(1022, 3))

    def test_setitem(self):
        self.block.from_file(os.path.join(TEST_DATA_DIR, "binaries", "1kb_rand.bin"))

        self.block[1] = 0xaa
        assert_equal(self.block[0], 0x25)
        assert_equal(self.block[1], 0xaa)
        assert_equal(self.block[2], 0x38)
        assert_raises(OutOfBoundsError, self.block.__setitem__, 1024, 0xbb)

        assert_raises(InvalidArgumentError, self.block.__setitem__, 5, 0x1234)
        assert_raises(InvalidArgumentError, self.block.__setitem__, 0, 0x100)
        assert_raises(InvalidArgumentError, self.block.__setitem__, 1, -1)

    def test_setitem_slice(self):
        self.block.from_file(os.path.join(TEST_DATA_DIR, "binaries", "1kb_rand.bin"))

        assert_list_equal(self.block[0:3].to_list(), [0x25, 0x20, 0x38])
        self.block[0:3] = [0xeb, 0x15, 0x66]
        assert_list_equal(self.block[0:3].to_list(), [0xeb, 0x15, 0x66])
        self.block[0:1024] = [5] * 1024
        assert_equal(self.block[0:1024].to_list(), [5] * 1024)

        assert_raises(InvalidArgumentError, self.block.__setitem__, slice(5, 0), [])
        assert_raises(InvalidArgumentError, self.block.__setitem__, slice(55, 55), [])
        assert_raises(OutOfBoundsError, self.block.__setitem__, slice(-1, 2), [])
        assert_raises(OutOfBoundsError, self.block.__setitem__, slice(1, 1025), [0] * 1024)
        assert_raises(OutOfBoundsError, self.block.__setitem__, slice(1024, 1025), [1])
        assert_raises(InvalidArgumentError, self.block.__setitem__, slice(0, 1), [])
        assert_raises(InvalidArgumentError, self.block.__setitem__, slice(0, 1), [1, 2, 3])
        assert_raises(InvalidArgumentError, self.block.__setitem__, slice(0, 5), [1, 2])

    def test_read_multi(self):
        self.block.from_list([0x03, 0xa1, 0x44, 0x15, 0x92, 0x65])

        assert_equal(self.block.read_multi(0, 4), 0x1544a103)
        assert_equal(self.block.read_multi(1, 4), 0x921544a1)
        assert_equal(self.block.read_multi(1, 1), 0xa1)
        assert_equal(self.block.read_multi(1, 2), 0x44a1)
        assert_equal(self.block.read_multi(2, 3), 0x921544)
        assert_equal(self.block.read_multi(3, 3), 0x659215)
        assert_equal(self.block.read_multi(5, 1), 0x65)
        assert_equal(self.block.read_multi(0, 0), 0)
        assert_equal(self.block.read_multi(5, 0), 0)

        assert_raises(InvalidArgumentError, self.block.read_multi, 0, -1)
        assert_raises(InvalidArgumentError, self.block.read_multi, 0, -99)
        assert_raises(OutOfBoundsError, self.block.read_multi, -1, 3)
        assert_raises(OutOfBoundsError, self.block.read_multi, 7, 1)
        assert_raises(OutOfBoundsError, self.block.read_multi, 5, 2)
        assert_raises(OutOfBoundsError, self.block.read_multi, 0, 7)

    def test_write_multi(self):
        self.block.from_list([0x03, 0xa1, 0x44, 0x15, 0x92, 0x65])

        self.block.write_multi(0, 0, 0)
        assert_list_equal(self.block.to_list(), [0x03, 0xa1, 0x44, 0x15, 0x92, 0x65])
        self.block.write_multi(0, 0xff, 1)
        assert_list_equal(self.block.to_list(), [0xff, 0xa1, 0x44, 0x15, 0x92, 0x65])
        self.block.write_multi(1, 0xa1b2, 2)
        assert_list_equal(self.block.to_list(), [0xff, 0xb2, 0xa1, 0x15, 0x92, 0x65])
        self.block.write_multi(2, 0x100000f, 4)
        assert_list_equal(self.block.to_list(), [0xff, 0xb2, 0x0f, 0x00, 0x00, 0x01])

        assert_raises(InvalidArgumentError, self.block.write_multi, 0, 0, -1)
        assert_raises(OutOfBoundsError, self.block.write_multi, -1, 0, 1)
        assert_raises(OutOfBoundsError, self.block.write_multi, -1, 0, 1)
        assert_raises(OutOfBoundsError, self.block.write_multi, 0, 0, 7)
        assert_raises(OutOfBoundsError, self.block.write_multi, 1, 0, 6)
        assert_raises(OutOfBoundsError, self.block.write_multi, 3, 0, 4)

    def test_len(self):
        self.block.from_list([0x03, 0xa1, 0x44, 0x15, 0x92, 0x65])
        assert_equal(len(self.block), 6)
        self.block.from_list([])
        assert_equal(len(self.block), 0)