@Test
	public void test() {
		List<String> myOutput = new LinkedList<String>();
		for (String s : input) {
			String[] parts = s.split("->");
			NonTerminalSymbol key = new NonTerminalSymbol(parts[0]);
			List<List<Symbol>> productionDestination = new ArrayList<List<Symbol>>();
			if (parts.length > 1) {
				for (String s2 : parts[1].split("\\|")) {
					List<Symbol> symbols = new ArrayList<Symbol>();
					for (Character c : s2.toCharArray()) {
						if (Character.isUpperCase(c)) {
							symbols.add(new NonTerminalSymbol(String.valueOf(c)));
						} else {
							symbols.add(new TerminalSymbol(String.valueOf(c)));
						}
					}
					productionDestination.add(symbols);
				}
			} else {
				productionDestination.add(new ArrayList<Symbol>());
			}
			for (List<Symbol> e : productionDestination) {
				Production p = new Production(key, e);
				System.out.println(p);
				System.out.println(LrItem.fromProduction(p));
				for (LrItem item : LrItem.fromProduction(p)) {
					myOutput.add(item.toString());
				}
			}
		}
		assertEquals(output.size(), myOutput.size());
		for (String s : myOutput) {
			assertTrue(output.contains(s));
		}
	}