public void AssertFirst_3()
{
ArrayList p = new ArrayList();
HaltInstruction hi = new HaltInstruction();
p.Add(hi);
AMProgram program = new AMProgram();
program.Initialize(p);
program.AssertFirst("male", 1, p);
ProgramClause male3 = program["male/1"];
program.AssertFirst("male", 1, p);
ProgramClause male2 = program["male/1"];
program.AssertFirst("male", 1, p);
ProgramClause male1 = program["male/1"];
Assert.AreEqual(male1.Name, "male");
Assert.AreEqual(male1.Arity, 1);
Assert.AreEqual(male1.Instruction.Name(), "try_me_else");
Assert.AreEqual(male2.Name, "male%1/1");
Assert.AreEqual(male2.Arity, 1);
Assert.AreEqual(male2.Instruction.Name(), "retry_me_else");
Assert.AreEqual(male3.Name, "male%2/1");
Assert.AreEqual(male3.Arity, 1);
Assert.AreEqual(male3.Instruction.Name(), "trust_me");
}