public void PutStructure()
{
AbstractMachineState state = SetupMachine();
PutStructureInstruction i = new PutStructureInstruction();
Assert.AreEqual("put_structure", i.Name());
Assert.AreEqual(2, i.NumberOfArguments());
object[] args = { "s/2", "X0" };
i.Process(args);
i.Execute(state);
AbstractTerm H = (AbstractTerm)state["H"];
Assert.IsTrue(H.IsStructure);
Assert.AreEqual(2, H.Arity);
Assert.AreEqual("s", H.Name);
AbstractTerm X0 = (AbstractTerm)state["X0"];
Assert.AreSame(H.Dereference(), X0.Dereference());
Assert.IsTrue(X0.IsStructure);
Assert.AreEqual(2, X0.Arity);
Assert.AreEqual("s", X0.Name);
}