[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)]"); }
public void GetVarForUnifierTest() { //Funcion mal hecha VarTerm v = un.GetVarForUnifier(new VarTerm("term")); Assert.AreEqual(); }
public void BindTest() { VarTerm v = new VarTerm("key"); ITerm t = new LiteralImpl(false, "value"); bool resultado = un.Bind(v, t); Assert.AreEqual(true, resultado); }
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); }
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); }
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); }
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); }
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); }
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()); } }
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); } }