Inheritance: IElement
コード例 #1
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
 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));
 }
コード例 #2
0
 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;
 }
コード例 #3
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        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);
        }
コード例 #4
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        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));
        }
コード例 #5
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        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"));
        }
コード例 #6
0
ファイル: Tuple.cs プロジェクト: ajlopez/AjErl
        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;
        }
コード例 #7
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
 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));
 }
コード例 #8
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
 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));
 }
コード例 #9
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
 public void MatchNull()
 {
     Tuple tuple = new Tuple(new object[] { 1, 2, 3 });
     Context context = new Context();
     Assert.IsFalse(tuple.Match(null, context));
 }
コード例 #10
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        public void TupleWithVariableToString()
        {
            Tuple tuple = new Tuple(new object[] { 1, new Variable("X"), 3 });

            Assert.AreEqual("{1,X,3}", tuple.ToString());
        }
コード例 #11
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        public void TupleWithAtomToString()
        {
            Tuple tuple = new Tuple(new object[] { 1, new Atom("atom"), 3 });

            Assert.AreEqual("{1,atom,3}", tuple.ToString());
        }
コード例 #12
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        public void SimpleTupleToString()
        {
            Tuple tuple = new Tuple(new object[] { 1, 2, 3 });

            Assert.AreEqual("{1,2,3}", tuple.ToString());
        }
コード例 #13
0
ファイル: TupleTests.cs プロジェクト: ajlopez/AjErl
        public void NoVariable()
        {
            Tuple tuple = new Tuple(new object[] { 1, 2, 3 });
            var result = tuple.FirstVariable();

            Assert.IsNull(result);
        }