@Test public void testSameInputTwoInstructionsFromDiffentRules() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); String s1 = "test"; Input input = new Input(inputTerms(null, s1), false, false); Instructions instructions1 = instructions("instruction1"); builder.addRule(input, instructions1); Instructions instructions2 = instructions("instruction2"); builder.addRule(input, instructions2); RulesCollection rulesCollection = builder.build(); PositionSequence<InputSequenceElement> sequence = new PositionSequence<>(); sequence.nextPosition(); sequence.addElement(new Term(null, s1)); List<Action> actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains(new Action(Arrays.asList(instructions1, instructions2), termMatches(s1), 0, 1))); }
@Test public void testMultipleTermsPerPosition() throws Exception { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); String s1 = "test1"; String s2 = "test2"; Input input1 = new Input(inputTerms(null, s1), false, false); Input input2 = new Input(inputTerms(null, s2), false, false); Instructions instructions1 = instructions("instruction1"); builder.addRule(input1, instructions1); Instructions instructions2 = instructions("instruction2"); builder.addRule(input2, instructions2); // Input is just s1 RulesCollection rulesCollection = builder.build(); PositionSequence<InputSequenceElement> sequence = new PositionSequence<>(); sequence.nextPosition(); sequence.addElement(new Term(null, s1)); List<Action> actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains(new Action(Arrays.asList(instructions1), termMatches(s1), 0, 1))); sequence.addElement(new Term(null, s2)); actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains(new Action(Arrays.asList(instructions1), termMatches(s1), 0, 1), new Action(Arrays.asList(instructions2), termMatches(s2), 0, 1))); }
@Test public void testSingeInputSingleInstruction() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); String s1 = "test"; Input input = new Input(inputTerms(null, s1), false, false); Instructions instructions = instructions("instruction1"); builder.addRule(input, instructions); RulesCollection rulesCollection = builder.build(); PositionSequence<InputSequenceElement> sequence = new PositionSequence<>(); sequence.nextPosition(); sequence.addElement(new Term(null, s1)); List<Action> actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains(new Action(Arrays.asList(instructions), termMatches(s1), 0, 1))); }
@Test public void testSingleInputTwoInstructionsFromSameRule() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); String s1 = "test"; Input input = new Input(inputTerms(null, s1), false, false); Instructions instructions = instructions("instruction1", "instruction2"); builder.addRule(input, instructions); RulesCollection rulesCollection = builder.build(); PositionSequence<InputSequenceElement> sequence = new PositionSequence<>(); sequence.nextPosition(); sequence.addElement(new Term(null, s1)); List<Action> actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains(new Action(Arrays.asList(instructions), termMatches(s1), 0, 1))); }
@Test public void testTwoMatchingInputsOnePartial() throws Exception { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); String s1 = "test1"; String s2 = "test2"; Input input1 = new Input(inputTerms(null, s1, s2), false, false); Input input2 = new Input(inputTerms(null, s2), false, false); Instructions instructions1 = instructions("instruction1"); Instructions instructions2 = instructions("instruction2"); builder.addRule(input2, instructions2); builder.addRule(input1, instructions1); // Input is s1 s2 RulesCollection rulesCollection = builder.build(); PositionSequence<InputSequenceElement> sequence = new PositionSequence<>(); sequence.nextPosition(); sequence.addElement(new Term(null, s1)); sequence.nextPosition(); sequence.addElement(new Term(null, s2)); List<Action> actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains( new Action(Arrays.asList(instructions1), termMatches(s1, s2), 0, 2), new Action(Arrays.asList(instructions2), termMatches(s2), 1, 2) ) ); }
Input input2 = new Input(inputTerms(null, s2), false, false); Instructions instructions1 = instructions("instruction1"); builder.addRule(input1, instructions1); Instructions instructions2 = instructions("instruction2"); builder.addRule(input2, instructions2);
Input input2 = new Input(inputTerms(null, s2, s3), false, false); Instructions instructions1 = instructions("instruction1"); builder.addRule(input1, instructions1); Instructions instructions2 = instructions("instruction2"); builder.addRule(input2, instructions2);
Instructions instructions1 = instructions("instruction1"); builder.addRule(input1, instructions1);