@Test
	public void testInfest() {
		try {
			// Clear the mosaic
			re.clear();

			// Set the parameters of the mosaic using a raster template
			re.setPresenceMap("./resource files/Age.txt",species);

			// Set the environment such that no cells are infested
			re.setPresenceMap("NONE",species);
			re.setHabitatMap("ALL", species);

			// Generate a List of propagules - note, these are coordinates, NOT
			// indices i.e. y is flipped.
			List<Coordinate> test_propagules = new ArrayList<Coordinate>();
			test_propagules.add(new Coordinate(0.5, 9.5));
			test_propagules.add(new Coordinate(1.5, 8.5));
			test_propagules.add(new Coordinate(2, 7.5));
			test_propagules.add(new Coordinate(4.5, 6));
			test_propagules.add(new Coordinate(7, 3));

			// Ensure cells are not infested
			assertFalse(re.getPatches().get(0).isInfestedBy(species));
			assertFalse(re.getPatches().get(20).isInfestedBy(species));
			assertFalse(re.getPatches().get(42).isInfestedBy(species));
			assertFalse(re.getPatches().get(64).isInfestedBy(species));
			assertFalse(re.getPatches().get(127).isInfestedBy(species));

			// Run the infestation
			re.infest(species, test_propagules);

			// Ensure cells are now infested
			assertTrue(re.getPatches().get(0).isInfestedBy(species));
			assertTrue(re.getPatches().get(21).isInfestedBy(species));
			assertTrue(re.getPatches().get(42).isInfestedBy(species));
			assertTrue(re.getPatches().get(64).isInfestedBy(species));
			assertTrue(re.getPatches().get(127).isInfestedBy(species));

			// Ensure no other cells are infested
			for (int i = 0; i < 10; i++) {
				for (int j = 0; j < 20; j++) {
					int key = i * 20 + j;
					if (key == 0 || key == 21 || key == 42 || key == 64
							|| key == 127 || re.getPatches().get(key).hasNoData()) {
						continue;
					}
					assertFalse(re.getPatches().get(key).isInfestedBy(species));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}	
	}