final ParserContext context = new ParserContext(st, Long.MAX_VALUE);
final TokenList squareUDPtokens = st.parseAndGetLastStep(Tokenizer.tokenize("square X = X*X"), context);
Assert.assertEquals(squareUDPtokens.toString() + " is of size 1", squareUDPtokens.size(), 1);
Assert.assertTrue(squareUDPtokens.get(0) + " is a UserDefinedParser",
squareUDPtokens.get(0) instanceof UserDefinedParser);
final UserDefinedParser squareUDP = (UserDefinedParser) squareUDPtokens.get(0);
Assert.assertEquals("Validate squareUDP template", TokenList.createD("square", Object.class),
squareUDP.getTemplate());
Assert.assertEquals("Validate squareUDP after", TokenList.createD("X", "*", "X"), squareUDP.after);
priorityPPF.addParser(squareUDP);
final TokenList quadUDPtokens = st.parseAndGetLastStep(Tokenizer.tokenize("quad X = square (square X)"),
context);
Assert.assertEquals(quadUDPtokens.toString() + " is of size 1", 1, quadUDPtokens.size());
Assert.assertTrue(quadUDPtokens.get(0) + " is a UserDefinedParser",
quadUDPtokens.get(0) instanceof UserDefinedParser);
final UserDefinedParser quadUDP = (UserDefinedParser) quadUDPtokens.get(0);
Assert.assertEquals("Validate quadUDP template", TokenList.createD("quad", Object.class),
quadUDP.getTemplate());
priorityPPF.addParser(quadUDP);
final TokenList result = st.parseAndGetLastStep(Tokenizer.tokenize("quad 2"), context);
Assert.assertEquals(result.toString() + " is of size 1", 1, result.size());
Assert.assertEquals(16, ((org.jscience.mathematics.number.Number) result.get(0)).intValue());