public void MatchSimpleTuple() { Tuple tuple = new Tuple(new object[] { 1, 2, 3 }); Tuple tuple2 = new Tuple(new object[] { 1, 2, 3 }); Context context = new Context(); Assert.IsTrue(tuple.Match(tuple2, context)); }
public object Apply(Context context, IList<object> arguments) { Atom atom = (Atom)arguments[0]; Module module = this.machine.LoadModule(atom.Name); context.SetValue(module.Name, module); Tuple tuple = new Tuple(new object[] { new Atom("ok"), new Atom(module.Name) }); return tuple; }
public void FirstVariableWithNestedTuple() { Tuple tuple = new Tuple(new object[] { new Tuple(new object[] { 1, 2, 3 }), new Variable("X"), 3 }); var result = tuple.FirstVariable(); Assert.IsNotNull(result); Assert.AreEqual("X", result.Name); }
public void CreateSimpleTuple() { Tuple tuple = new Tuple(new object[] { 1, 2, 3 }); Assert.AreEqual(3, tuple.Arity); Assert.AreEqual(1, tuple.ElementAt(0)); Assert.AreEqual(2, tuple.ElementAt(1)); Assert.AreEqual(3, tuple.ElementAt(2)); }
public void MatchTuplesWithAVariable() { Tuple tuple = new Tuple(new object[] { 1, new Variable("X"), 3 }); Tuple tuple2 = new Tuple(new object[] { 1, 2, 3 }); Context context = new Context(); Assert.IsTrue(tuple.Match(tuple2, context)); Assert.AreEqual(2, context.GetValue("X")); Assert.IsTrue(tuple2.Match(tuple, context)); Assert.AreEqual(2, context.GetValue("X")); }
public bool Match(Tuple tuple, Context context) { if (tuple == null) return false; if (tuple.Arity != this.Arity) return false; for (int k = 0; k < this.elements.Count && context != null; k++) if (!AjErl.MatchUtilities.MatchObjects(this.elements[k], tuple.ElementAt(k), context)) return false; return true; }
public void NoMatchTuplesWithDifferentArities() { Tuple tuple = new Tuple(new object[] { 1, 2, 3 }); Tuple tuple2 = new Tuple(new object[] { 1, 2, 3, 4 }); Context context = new Context(); Assert.IsFalse(tuple.Match(tuple2, context)); Assert.IsFalse(tuple2.Match(tuple, context)); }
public void MatchTuplesWithNullElement() { Tuple tuple = new Tuple(new object[] { 1, null, 3 }); Tuple tuple2 = new Tuple(new object[] { 1, null, 3 }); Context context = new Context(); Assert.IsTrue(tuple.Match(tuple2, context)); }
public void MatchNull() { Tuple tuple = new Tuple(new object[] { 1, 2, 3 }); Context context = new Context(); Assert.IsFalse(tuple.Match(null, context)); }
public void TupleWithVariableToString() { Tuple tuple = new Tuple(new object[] { 1, new Variable("X"), 3 }); Assert.AreEqual("{1,X,3}", tuple.ToString()); }
public void TupleWithAtomToString() { Tuple tuple = new Tuple(new object[] { 1, new Atom("atom"), 3 }); Assert.AreEqual("{1,atom,3}", tuple.ToString()); }
public void SimpleTupleToString() { Tuple tuple = new Tuple(new object[] { 1, 2, 3 }); Assert.AreEqual("{1,2,3}", tuple.ToString()); }
public void NoVariable() { Tuple tuple = new Tuple(new object[] { 1, 2, 3 }); var result = tuple.FirstVariable(); Assert.IsNull(result); }