@Test
	public void testWinningGame() {
		// regions
		@SuppressWarnings("deprecation")
		Region region1 = new Region(565, 425, 0, 0);
		@SuppressWarnings("deprecation")
		Region region2 = new Region(605, 425, 0, 0);
		@SuppressWarnings("deprecation")
		Region region3 = new Region(520, 510, 0, 0);
		@SuppressWarnings("deprecation")
		Region region4 = new Region(565, 340, 0, 0);
		@SuppressWarnings("deprecation")
		Region region5 = new Region(605, 340, 0, 0);
		@SuppressWarnings("deprecation")
		Region region6 = new Region(650, 340, 0, 0);
		@SuppressWarnings("deprecation")
		Region region7 = new Region(565, 255, 0, 0);

		ArrayList<Region> regions = new ArrayList<Region>();
		regions.add(region1);
		regions.add(region2);
		regions.add(region3);
		regions.add(region4);
		regions.add(region5);
		regions.add(region6);
		regions.add(region7);

		for (Region region : regions) {
			region.setH(70);
			region.setW(70);
		}

		// set up
		if (SikuliDemonstration.screen.exists(this.twixtSelection) != null) {
			try {
				SikuliDemonstration.screen.click(this.twixtSelection);
			} catch (FindFailed e) {
				fail("Set up failed due to: " + e.getMessage());
			}
		}

		try {
			SikuliDemonstration.screen.click(this.startBtn);
			SikuliDemonstration.screen.click(this.newGameBtn);
			SikuliDemonstration.screen.wait(this.firstPlayerInput);
			SikuliDemonstration.screen.type(null, this.playerOne, 0);
			SikuliDemonstration.screen.click(this.okBtn);
			SikuliDemonstration.screen.wait(this.secondPlayerInput);
			SikuliDemonstration.screen.type(null, this.playerTwo, 0);
			SikuliDemonstration.screen.click(this.okBtn);
		} catch (FindFailed e) {
			fail("Set up failed due to: " + e.getMessage());
		}

		try {
			region1.highlight(1);
			if (region1.exists(this.spot) != null) {
				region1.click(this.spot);
			}

			region2.highlight(1);
			if (region2.exists(this.spot) != null) {
				region2.click(this.spot);
			}

			region3.highlight(1);
			region3.click(this.firstPlayerTower);
			region1.click(this.firstPlayerTower);

			region4.highlight(1);
			region4.click(this.spot);

			region5.highlight(1);
			region5.click(this.spot);

			region6.highlight(1);
			region6.click(this.spot);

			region1.click(this.firstPlayerTower);
			region5.click(this.firstPlayerTower);

			region2.click(this.secondPlayerTower);
			region6.click(this.secondPlayerTower);

			region5.click(this.firstPlayerTower);
			region7.highlight(1);
			region7.click(this.firstPlayerTower);

			assertTrue(SikuliDemonstration.screen.exists(this.bobWins) != null);

			SikuliDemonstration.screen.type(Key.ENTER);
			SikuliDemonstration.screen.type(Key.ENTER);
		} catch (FindFailed e) {
			fail("Test failed due to: " + e.getMessage());
		}

		if (SikuliDemonstration.screen.exists(this.menuBar) != null) {
			// quit first
			try {
				SikuliDemonstration.screen.click(this.gameMenuItem);
				SikuliDemonstration.screen.click(this.quitMenuItem);
				SikuliDemonstration.screen.click(this.yesBtn);
			} catch (FindFailed e) {
				fail("Couldn't tear down previous test due to: " + e.getMessage());
			}
		} else {
			// nothing do tear down.
			System.out.println("nothing to tear down.");
		}
	}