Beispiel #1
0
 [SetUp] // El @Before de Java
 public void SetUp()
 {
     vector    = new ITerm[3];
     vector[0] = new NumberTermImpl(-3);
     vector[1] = new VarTerm("Daniel");
     vector[2] = new Pred("hello(brother)[nice(brother)]");
 }
Beispiel #2
0
        public void GetVarForUnifierTest()
        {
            //Funcion mal hecha
            VarTerm v = un.GetVarForUnifier(new VarTerm("term"));

            Assert.AreEqual();
        }
Beispiel #3
0
        public void BindTest()
        {
            VarTerm v = new VarTerm("key");
            ITerm   t = new LiteralImpl(false, "value");

            bool resultado = un.Bind(v, t);

            Assert.AreEqual(true, resultado);
        }
Beispiel #4
0
        public void GetStringTest()
        {
            un.function.Add(new VarTerm("key"), new VarTerm("value"));
            string s = "key";

            ITerm resultado = un.Get(s);

            VarTerm v = new VarTerm("value");

            Assert.AreEqual(v, resultado);
        }
Beispiel #5
0
        public void GetVarTermTest()
        {
            un.function.Add(new VarTerm("key"), new VarTerm("value"));

            VarTerm k = new VarTerm("key");

            VarTerm v = new VarTerm("value");

            ITerm resultado = un.Get(k);

            Assert.AreEqual(v, resultado);
        }
Beispiel #6
0
        public void DerefTest()
        {
            un.function.Add(new VarTerm("key"), new VarTerm("value"));

            VarTerm v = new VarTerm("key");

            VarTerm funcion = un.Deref(v);

            bool resultado = un.function.ContainsKey(v);

            Assert.AreEqual(true, resultado);
        }
Beispiel #7
0
        public void GetVarFromValueTest()
        {
            //Tengo probar con el diccionario function pero no me deja tocarlo
            un.function.Add(new VarTerm("key"), new VarTerm("value"));

            ITerm v = new VarTerm("value");

            ITerm k = new VarTerm("key");

            VarTerm resultado = un.GetVarFromValue(v);

            Assert.AreEqual(k, resultado);
        }
Beispiel #8
0
        public void ParseVarTermTest()
        {
            VarTerm vt        = new VarTerm("A");
            VarTerm resultado = AsSyntax.ParseVar("A");

            Assert.NotNull(resultado);
            Assert.NotNull(vt);
            Assert.IsTrue(vt.IsVar());
            Assert.IsTrue(resultado.IsVar());
            Assert.IsTrue(vt.Equals(vt));
            Assert.IsTrue(vt.Equals(vt));
            Assert.IsTrue(vt.Equals(resultado));
            Assert.AreNotSame(vt, resultado);
            Assert.AreEqual(vt, resultado);
        }
Beispiel #9
0
        public void MakeVarsAnnon(Literal l, Unifier un)
        {
            try
            {
                for (int i = 0; i < l.GetArity(); i++)
                {
                    ITerm t = l.GetTerm(i);
                    if (t.IsString())
                    {
                        IStringTerm     st        = (IStringTerm)t;
                        MatchCollection matcher   = rx.Matches(st.GetString());
                        StringBuilder   sb        = new StringBuilder();
                        int             last      = 0;
                        var             userBlock = new List <string>();

                        foreach (Match item in matcher)
                        {
                            string sVar = item.Groups[0].Value;
                            sVar = sVar.Substring(2, sVar.Length - 1);
                            ITerm v = AsSyntax.AsSyntax.ParseTerm(sVar);
                            if (v.IsVar())
                            {
                                VarTerm to = ((Structure)l).VarToReplace(v, un);
                                //matcher.appendReplacement(sb, "#{" + to.ToString() + "}");
                                if (sVar.Trim().Length > 0)
                                {
                                    userBlock.Add(sVar);
                                    //No sabemos si esto está bien: el primer Append es para copiar el trozo
                                    //no matcheado y el segundo para el trozo que sí
                                    sb.Append(st.GetString().Substring(last, item.Index - last));
                                    sb.Append(t.IsString() ? ((IStringTerm)t).GetString() : t.ToString());
                                }
                                last = item.Index + item.Length;
                            }
                        }
                        //matcher.appendTail(sb);
                        sb.Append(st.GetString().Substring(last));
                        l.SetTerm(i, new StringTermImpl(sb.ToString()));
                    }
                }
            }
            catch (ParseException pe)
            {
                Debug.Log(pe.ToString());
            }
        }
Beispiel #10
0
        public override double Evaluate(Reasoner reasoner, ITerm[] args)
        {
            // create a literal to perform the query
            Literal r;

            if (literal.IndexOf(".") > 0) // is internal action
            {
                r = new InternalActionLiteral(literal);
            }
            else
            {
                r = new LiteralImpl(literal);
            }

            r.AddTerms(args);
            VarTerm answer = new VarTerm("__RuleToFunctionResult");

            r.AddTerm(answer);

            // query the BB
            IEnumerator <Unifier> i = r.LogicalConsequence((reasoner == null ? null : reasoner.GetAgent()), new Unifier());

            if (i.MoveNext())
            {
                ITerm value = i.Current.Get(answer);
                if (value.IsNumeric())
                {
                    return(((INumberTerm)value).Solve());
                }
                else
                {
                    throw new JasonityException("The result of " + r + " (=" + value + ") is not numeric!");
                }
            }
            else
            {
                throw new JasonityException("No solution was found for rule " + r);
            }
        }