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);
}