@Test
	public void testNoDuplicateLineAdded() {
		ArrayList<Integer> compressedPath, path;
		HashSet<String> visitedLines, station1LineSet, station2LineSet, lineSetIntersect;
		Connection rail;
		for (Integer s1Index : mmap.getMetroGraph().vertexSet()) {
			for (Integer s2Index : mmap.getMetroGraph().vertexSet()) {
				if (s1Index != s2Index) {
					path = mmap.getQuickestRoute(s1Index, s2Index);
					compressedPath = mmap.compressStationIndexPath(path, true);
					/** Test Compressed Path contains at least two stations **/
					assertTrue(compressedPath.size() >= 2);
					visitedLines = new HashSet<>();
					Integer curStationIndex, preStationIndex;
					for (int i=1; i < compressedPath.size(); i++) {
						curStationIndex = compressedPath.get(i);
						preStationIndex = compressedPath.get(i-1);
						station1LineSet = mmap.getStationByIndex(curStationIndex).getLines();
						station2LineSet = mmap.getStationByIndex(preStationIndex).getLines();
						lineSetIntersect = Utility.getSetIntersect(station1LineSet, station2LineSet);
						/** Test compress path cannot contain duplicated visted lines **/
						if (!lineSetIntersect.isEmpty()) {
							for (String l : lineSetIntersect) {
								assertTrue(!visitedLines.contains(l));
								visitedLines.add(l);
							}
						} else {
							rail = mmap.getRail(curStationIndex, preStationIndex);
							assertTrue(rail != null && rail.getLine() == "SATELITE");
						}
					}
				}
			}
		}
	}