public virtual void TestReorderIncorrectShiftResultingTree()
 {
     for (int testcase = 0; testcase < correctTrees.Length; ++testcase)
     {
         State state = ShiftReduceParser.InitialStateFromGoldTagTree(correctTrees[testcase]);
         IList <ITransition> gold = CreateTransitionSequence.CreateTransitionSequence(binarizedTrees[testcase]);
         // System.err.println(correctTrees[testcase]);
         // System.err.println(gold);
         int tnum = 0;
         for (; tnum < gold.Count; ++tnum)
         {
             if (gold[tnum] is BinaryTransition)
             {
                 break;
             }
             state = gold[tnum].Apply(state);
         }
         state = shift.Apply(state);
         IList <ITransition> reordered = Generics.NewLinkedList(gold.SubList(tnum, gold.Count));
         NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(reordered));
         // System.err.println(reordered);
         foreach (ITransition transition in reordered)
         {
             state = transition.Apply(state);
         }
         Tree debinarized = debinarizer.TransformTree(state.stack.Peek());
         // System.err.println(debinarized);
         NUnit.Framework.Assert.AreEqual(incorrectShiftTrees[testcase].ToString(), debinarized.ToString());
     }
 }
        public virtual void TestReorderIncorrectShift()
        {
            IList <ITransition> transitions = BuildTransitionList(rightNP, shift, rightVP, finalize);

            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(tempRightVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(rightNP, shift, shift, leftNP, rightVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, leftNP, tempRightVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(rightNP, shift, unaryADVP, shift, leftNP, rightVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(unaryADVP, shift, leftNP, tempRightVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(rightNP, shift, shift, unaryADVP, leftNP, rightVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempRightVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(leftNP, shift, shift, unaryADVP, leftNP, rightVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempRightVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(leftNP, shift, shift, unaryADVP, leftNP, leftVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempLeftVP, leftVP, finalize), transitions);
            transitions = BuildTransitionList(rightNP, shift, shift, unaryADVP, leftNP, leftVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempLeftVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(leftNP, leftNP, shift, shift, unaryADVP, leftNP, rightVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempRightVP, tempRightVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(leftNP, rightNP, shift, shift, unaryADVP, leftNP, leftVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempLeftVP, tempLeftVP, rightVP, finalize), transitions);
            transitions = BuildTransitionList(leftNP, leftNP, shift, shift, unaryADVP, leftNP, leftVP, finalize);
            NUnit.Framework.Assert.IsTrue(ReorderingOracle.ReorderIncorrectShiftTransition(transitions));
            NUnit.Framework.Assert.AreEqual(BuildTransitionList(shift, unaryADVP, leftNP, tempLeftVP, tempLeftVP, leftVP, finalize), transitions);
        }