public void TryMeElse() { AbstractMachineState state = SetupMachine(); AMProgram program = (AMProgram)state.Program; AMTrail trail = (AMTrail)state.Trail; program.AddLabel("foobar/2", new ProgramClause()); TryMeElseInstruction i = new TryMeElseInstruction(); object[] args = { "foobar/2" }; i.Process(args); program.NumberOfArguments = 2; i.Execute(state); Assert.AreEqual("try_me_else", i.Name()); Assert.AreEqual(1, i.NumberOfArguments()); Assert.AreEqual(2, state.B.Arity); Assert.IsNull(state.B.B); Assert.AreSame(state.B.CE, state.E); Assert.AreSame(state.B.CP, program.CP); Assert.AreSame(state.B.NextClause, program["foobar/2"]); Assert.AreEqual(state.B.TR, trail.TR); }