	@Test
	public void testAddressSpecial() throws Exception {

		Tiling2048 tiling2048 = Tiling2048.createWithRandomWeights(3, 15, new int[] { 7, 8, 9, 10, 15, 16 }, 16,
				0, 0, new RandomDataGenerator(new MersenneTwister(123)));

		Assert.assertEquals(0, tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 })));

		Assert.assertEquals(0, tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 })));

		Assert.assertEquals(0, tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13 })));

		Assert.assertEquals(0, tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13 })));

		Assert.assertEquals((1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0})));

		Assert.assertEquals(2*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 13 })));

		Assert.assertEquals(3*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0 })));

		Assert.assertEquals(4*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 13, 0 })));

		Assert.assertEquals(5*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 0, 0 })));

		Assert.assertEquals(6*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 14, 15, 0, 0 })));

		Assert.assertEquals(2*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 14, 14, 0, 0 })));

		Assert.assertEquals(6*(1<<24), tiling2048.addressSpecial(new State2048(
				new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 15, 15, 0, 0 })));
	}