Inheritance: AbstractTerm
コード例 #1
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
 public void IsReference()
 {
     StructureTerm t = new StructureTerm();
     AbstractTerm a = new StructureTerm();
     Assert.IsFalse(t.IsReference);
     Assert.IsFalse(a.IsReference);
 }
コード例 #2
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
 public void IsStructure()
 {
     StructureTerm t = new StructureTerm();
     AbstractTerm a = new StructureTerm();
     Assert.IsTrue(t.IsStructure);
     Assert.IsTrue(a.IsStructure);
 }
コード例 #3
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
 public void IsObject()
 {
     StructureTerm t = new StructureTerm();
     AbstractTerm a = new StructureTerm();
     Assert.IsFalse(t.IsObject);
     Assert.IsFalse(a.IsObject);
 }
コード例 #4
0
        public void cos_expr()
        {
            StructureTerm addOp = new StructureTerm("cos", 1);
            addOp.Next = new ConstantTerm("5");

            eval(addOp, Math.Cos(5));
        }
コード例 #5
0
        public void log_expr()
        {
            StructureTerm addOp = new StructureTerm("log", 1);
            addOp.Next = new ConstantTerm("5");

            eval(addOp, Math.Log(5));
        }
コード例 #6
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
 public void IsConstant()
 {
     StructureTerm t = new StructureTerm();
     AbstractTerm a = new StructureTerm();
     Assert.IsFalse(t.IsConstant);
     Assert.IsFalse(a.IsConstant);
 }
コード例 #7
0
        public void add_expr()
        {
            StructureTerm addOp = new StructureTerm("+", 2);
            addOp.Next = new ConstantTerm("1");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 3);
        }
コード例 #8
0
        public void mul_expr()
        {
            StructureTerm addOp = new StructureTerm("*", 2);
            addOp.Next = new ConstantTerm("5");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 10);
        }
コード例 #9
0
        public void div_expr()
        {
            StructureTerm addOp = new StructureTerm("/", 2);
            addOp.Next = new ConstantTerm("6");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 6/2);
        }
コード例 #10
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Indexing()
        {
            StructureTerm s = new StructureTerm("s", 2);

            s.Next = new ConstantTerm("ali");
            s.Next.Next = new ConstantTerm("samir");

            Assert.AreEqual("ali", s[0].Data());
            Assert.AreEqual("samir", s[1].Data());
        }
コード例 #11
0
        public void tan_expr()
        {
            StructureTerm addOp = new StructureTerm("tan", 1);
            addOp.Next = new ConstantTerm("5");

            eval(addOp, Math.Tan(5));
        }
コード例 #12
0
        public void sub_expr()
        {
            StructureTerm addOp = new StructureTerm("-", 2);
            addOp.Next = new ConstantTerm("5");
            addOp.Next.Next = new ConstantTerm("2");

            eval(addOp, 3);
        }
コード例 #13
0
ファイル: ListTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_lis_str()
        {
            ListTerm list = new ListTerm();
            StructureTerm con = new StructureTerm("s", 2);

            Assert.IsFalse(list.Unify(con));
        }
コード例 #14
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_str_ne_str()
        {
            StructureTerm s1 = new StructureTerm("s", 2);
            s1.Next = new ConstantTerm("ali");
            s1.Next.Next = new ConstantTerm("samir");

            StructureTerm s2 = new StructureTerm("s", 2);
            s2.Next = new ConstantTerm("samir");
            s2.Next.Next = new ConstantTerm("samir");

            Assert.IsFalse(s1.Unify(s2));
        }
コード例 #15
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
 public void Data()
 {
     StructureTerm t = new StructureTerm();
     Assert.IsNull(t.Data());
 }
コード例 #16
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_str_ref_str()
        {
            StructureTerm s1 = new StructureTerm("s", 1);
            s1.Next = new AbstractTerm();

            StructureTerm s2 = new StructureTerm("s", 1);
            s2.Next = new ConstantTerm("ali");

            Assert.IsTrue(s1.Unify(s2));

            Assert.AreEqual(s1[0].Data(), s2[0].Data());
        }
コード例 #17
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_str_ref()
        {
            AbstractTerm term = new AbstractTerm();
            StructureTerm s = new StructureTerm("s", 2);

            Assert.IsTrue(s.Unify(term));

            Assert.AreEqual(term.Arity, s.Arity);
            Assert.AreEqual(term.Name, s.Name);
        }
コード例 #18
0
ファイル: ConstantTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_con_str()
        {
            ConstantTerm con = new ConstantTerm("ali");
            StructureTerm term = new StructureTerm("samir", 2);

            Assert.IsFalse(con.Unify(term));
        }
コード例 #19
0
ファイル: BuiltinTests.cs プロジェクト: ahodroj/prologdotnet
        public void call_1()
        {
            AbstractMachineState state = SetupMachine();
            AMProgram program = (AMProgram)state.Program;

            _p = new CallPredicate();

            Verify("call", 1);

            AbstractTerm X0 = (AbstractTerm)state["X0"];

            StructureTerm goal = new StructureTerm("male", 1);
            goal.Next = new ConstantTerm("ali");
            program.AddLabel("male/1", new ProgramClause("male", 1));

            X0.Assign(goal);

            _p.Execute(state);

            Assert.AreEqual(X0.Data(), "ali");
            ProgramClause p = (ProgramClause)program.P;
            Assert.AreEqual(p.Name, "male");
            Assert.AreEqual(p.Arity, 1);
        }
コード例 #20
0
        public void pow_expr()
        {
            StructureTerm op = new StructureTerm("^", 2);
            op.Next = new ConstantTerm("3");
            op.Next.Next = new ConstantTerm("2");

            eval(op, Math.Pow(3, 2));
        }
コード例 #21
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_str_lis()
        {
            StructureTerm s = new StructureTerm("s", 2);
            ListTerm l = new ListTerm();

            Assert.IsFalse(s.Unify(l));
        }
コード例 #22
0
ファイル: AbstractTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_ref_str()
        {
            AbstractTerm term = new AbstractTerm();
            StructureTerm con = new StructureTerm();

            Assert.IsTrue(term.Unify(con));

            Assert.AreSame(term.Reference(), con.Reference());
            Assert.IsTrue(term.IsStructure);
            Assert.IsFalse(term.IsReference);
        }
コード例 #23
0
ファイル: StructureTerm.cs プロジェクト: ahodroj/prologdotnet
        public void Unify_str_con()
        {
            ConstantTerm term = new ConstantTerm("ali");
            StructureTerm s = new StructureTerm("s", 2);

            Assert.IsFalse(s.Unify(term));
        }
コード例 #24
0
        public void ExecuteVar()
        {
            AbstractMachineState state = SetupMachine();

            ExecuteVariableInstruction i = new ExecuteVariableInstruction();

            i.Process(new string[] { "X0" });

            AMProgram program = (AMProgram)state.Program;

            ProgramClause x = new ProgramClause("male", 1);

            program.AddLabel("male/1", x);

            AbstractTerm X0 = (AbstractTerm)state["X0"];

            StructureTerm s = new StructureTerm("male", 1);
            s.Next = new ConstantTerm("ali");

            X0.Assign(s);

            i.Execute(state);

            Assert.AreSame(program.P, x);
            Assert.AreEqual("executevar", i.Name());
            Assert.AreEqual(1, i.NumberOfArguments());
        }
コード例 #25
0
ファイル: AMHeap.cs プロジェクト: ahodroj/prologdotnet
        public void Push_StructureTerm()
        {
            AMHeap heap = new AMHeap();

            StructureTerm con = new StructureTerm("Hello, World!", 2);

            heap.Push(con);

            Assert.AreSame(con, heap.Top());
        }