@Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        } else if (!(obj instanceof Tile)) {
            return false;
        }
        Tile other = (Tile) obj;
        if (this.tileX != other.tileX) {
            return false;
        } else if (this.tileY != other.tileY) {
            return false;
        } else if (this.zoomLevel != other.zoomLevel) {
            return false;
        } else if (this.tileSize != other.tileSize) {
            return false;
        }
        return true;
    }
@Test
    public void equalsTest() {
        Tile tile1 = new Tile(1, 2, (byte) 3, TILE_SIZE);
        Tile tile2 = new Tile(1, 2, (byte) 3, TILE_SIZE);
        Tile tile3 = new Tile(1, 1, (byte) 3, TILE_SIZE);
        Tile tile4 = new Tile(2, 2, (byte) 3, TILE_SIZE);
        Tile tile5 = new Tile(1, 2, (byte) 4, TILE_SIZE);

        TestUtils.equalsTest(tile1, tile2);

        TestUtils.notEqualsTest(tile1, tile3);
        TestUtils.notEqualsTest(tile1, tile4);
        TestUtils.notEqualsTest(tile1, tile5);
        TestUtils.notEqualsTest(tile1, new Object());
        TestUtils.notEqualsTest(tile1, null);
    }