//[TestCase(new[] { "Race([y])!=Race([x])", "Strength([x])>=Strength([y])", "[x]!=[y]" }, true, null)] //[TestCase(new[] { "Race([y])!=Race([x])", "Strength([x])>=Strength([y])", "[x]!=[y]", "#[x]=3" }, true, null)] //[TestCase(new[] { "Race([y])!=Race([x])", "Strength([x])>=Strength([y])", "[x]!=[y]", "Count([x])=3", "Count([y])=5" }, true, null)] //[TestCase(new[] { "Count(Like([x]))=0" }, true, null)] public void Test_ConditionSet(string[] conditions, bool result, string[] constraints) { var set = constraints != null?new[] { new SubstitutionSet(constraints.Select(c => new Substitution(c))) }:null; var conds = new ConditionSet(conditions.Select(Condition.Parse)); Assert.AreEqual(result, conds.Unify(_kb, Name.SELF_SYMBOL, set).Any()); }
public void Test_DP_Math_NoMatch(string contraints, string methodCall) { var me = (Name)"Ana"; var kb = new KB(me); var resultVariable = methodCall.Split('=')[1]; var conditions = contraints.Split(','); IEnumerable <SubstitutionSet> resultingConstraints; var condSet = new ConditionSet(); var cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var c in conditions) { cond = Condition.Parse(c); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(kb, Name.SELF_SYMBOL, null); condSet = new ConditionSet(); cond = Condition.Parse(methodCall); condSet = condSet.Add(cond); var res = condSet.Unify(kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsEmpty(res); }
public void Test_DP_LastEventID_ValueMatch(int eventSet, string context, string lastEventMethodCall, string expectedValue) { var rpc = BuildRPCAsset(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); rpc.Tick++; } // Build the context, parsin the conditions: var resultVariable = lastEventMethodCall.Split('=')[1]; var conditions = context.Split(','); var cond = Condition.Parse("[x] != True"); var condSet = new ConditionSet(); IEnumerable <SubstitutionSet> resultingConstraints = new List <SubstitutionSet>(); if (conditions[0] != "") { condSet = new ConditionSet(); cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); } condSet = new ConditionSet(); cond = Condition.Parse(lastEventMethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); var actualResult = ""; foreach (var sub in result) { if (sub.Contains((Name)resultVariable)) { actualResult = sub[(Name)resultVariable].ToString(); } } Assert.AreEqual(expectedValue, actualResult); }
public void Test_DP_Volition_Step_Match(int eventSet, string context, string MethodCall, string variable, string value) { var rpc = BuildRPCAsset3(); var cif = BuildCIFAsset(); cif.RegisterKnowledgeBase(rpc.m_kb); rpc.LoadAssociatedAssets(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); rpc.Tick++; } // conditions var conditions = context.Split(','); IEnumerable <SubstitutionSet> resultingConstraints; var condSet = new ConditionSet(); var cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); condSet = new ConditionSet(); cond = Condition.Parse(MethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsNotEmpty(result); var sub = result.FirstOrDefault().Where(x => x.Variable == (Name)variable); var ret = sub.FirstOrDefault().SubValue; Assert.AreEqual(ret.Value.ToString(), value); }
public void ConditionEvaluatorSet_Test_Universal_Pass(params string[] beliefs) { var kb = new KB((Name)"Me"); foreach (var s in beliefs.Select(b => b.Split(':'))) { kb.Tell((Name)s[0], (Name)s[1]); } var set = new ConditionSet(LogicalQuantifier.Universal, TEST_CONDITIONS); Assert.True(set.Unify(kb, Name.SELF_SYMBOL, null).Any()); }
public void Test_DP_Math_Match(string contraints, string methodCall, float result) { var me = (Name)"Ana"; var kb = new KB(me); var resultVariable = methodCall.Split('=')[1]; var conditions = contraints.Split(','); IEnumerable <SubstitutionSet> resultingConstraints; var condSet = new ConditionSet(); var cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var c in conditions) { cond = Condition.Parse(c); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(kb, Name.SELF_SYMBOL, null); condSet = new ConditionSet(); cond = Condition.Parse(methodCall); condSet = condSet.Add(cond); var res = condSet.Unify(kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsNotEmpty(res); Name actualResult = Name.BuildName(0); foreach (var v in res.FirstOrDefault()) { if (v.Variable == (Name)resultVariable) { actualResult = v.SubValue.Value; break; } } Assert.AreEqual(actualResult, Name.BuildName(result)); }
public void Test_DP_Volition_NoMatch(int eventSet, string context, string MethodCall) { var rpc = BuildRPCAsset(); var cif = BuildCIFAsset(); cif.RegisterKnowledgeBase(rpc.m_kb); rpc.LoadAssociatedAssets(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); rpc.Tick++; } // conditions var conditions = context.Split(','); IEnumerable <SubstitutionSet> resultingConstraints; var condSet = new ConditionSet(); var cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); condSet = new ConditionSet(); cond = Condition.Parse(MethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsEmpty(result); }
public void Test_DP_EventID_NoMatch(int eventSet, string context, string MethodCall) { var rpc = BuildRPCAsset(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); } // Build the context, parsin the conditions: var conditions = context.Split(','); IEnumerable <SubstitutionSet> resultingConstraints; var condSet = new ConditionSet(); var cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); condSet = new ConditionSet(); cond = Condition.Parse(MethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); /* // what is the id I'm looking for * var wantedSub = cond.ToString().Split('='); * * foreach (var sub in result) * { * if(sub) * }*/ Assert.IsEmpty(result); }
public void Test_DP_StrongestEmotion_Match(int eventSet, string context, string lastEventMethodCall) { var rpc = BuildEmotionalRPCAsset(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); rpc.Tick++; } // Initializing var condSet = new ConditionSet(); var cond = Condition.Parse("[x] = True"); IEnumerable <SubstitutionSet> resultingConstraints = new List <SubstitutionSet>(); if (context != "") { var conditions = context.Split(','); cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); } condSet = new ConditionSet(); cond = Condition.Parse(lastEventMethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsNotEmpty(result); }
public void Test_DP_LastEventID_Match(int eventSet, string context, string lastEventMethodCall) { var rpc = BuildRPCAsset(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); rpc.Tick++; } // Build the context, parsin the conditions: var conditions = context.Split(','); IEnumerable <SubstitutionSet> resultingConstraints; var condSet = new ConditionSet(); var cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); condSet = new ConditionSet(); cond = Condition.Parse(lastEventMethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsNotEmpty(result); }
// [TestCase(1, "isAgent(Sarah)=True")] public void Test_DP_NoConstraintSet_Match(int eventSet, string lastEventMethodCall) { var rpc = BuildEmotionalRPCAsset(); PopulateEventSet(eventSet); foreach (var eve in eventSets[eventSet]) { rpc.Perceive((Name)eve); rpc.Tick++; } var condSet = new ConditionSet(); var cond = Condition.Parse(lastEventMethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); Assert.IsNotEmpty(result); }
public void Test_IAT_DP_ValidDialogue_NoMatch(string context, string lastEventMethodCall) { var iat = Build_IAT_Asset(); var id = new Guid(); var d = new DialogueStateActionDTO() { CurrentState = "Start", Meaning = "-", NextState = "S1", Style = "-", Utterance = "sbahh", Id = id, UtteranceId = "1" }; var id2 = new Guid(); var d2 = new DialogueStateActionDTO() { CurrentState = "S1", Meaning = "-", NextState = "S2", Style = "Rude", Utterance = "ssadasdasdh", Id = id2, UtteranceId = "2" }; iat.AddDialogAction(d); iat.AddDialogAction(d2); // iat.AddNewCharacterSource(new CharacterSourceDTO(){}); var rpc = BuildRPCAsset(); // Associating IAT to RPC iat.BindToRegistry(rpc.DynamicPropertiesRegistry); // Making sure the RPC is well Initialized rpc.Perceive(EventHelper.ActionEnd("Sarah", "EnterRoom", "Matt")); rpc.Perceive(EventHelper.ActionEnd("Sarah", "Speak(S3,S4,Polite, Rude)", "Matt")); // Initializing var condSet = new ConditionSet(); var cond = Condition.Parse("[x] = True"); IEnumerable <SubstitutionSet> resultingConstraints = new List <SubstitutionSet>(); if (context != "") { var conditions = context.Split(','); cond = Condition.Parse(conditions[0]); // Apply conditions to RPC foreach (var res in conditions) { cond = Condition.Parse(res); condSet = condSet.Add(cond); } resultingConstraints = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, null); } condSet = new ConditionSet(); cond = Condition.Parse(lastEventMethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(rpc.m_kb, Name.SELF_SYMBOL, resultingConstraints); Assert.IsEmpty(result); }
private Name FilterStep(Name SE, Name target) // Missing the target { Name properStep = (Name)"-"; // 1) Determine the Social Exchange var socialExchange = this.m_SocialExchanges.Find(x => x.Name == SE); if (socialExchange == null) { return(properStep); } // 2) Determine the steps of the Social Exchange var _Steps = new List <Name>(); if (socialExchange.Steps.Count > 0) { _Steps = socialExchange.Steps; } else { return(properStep); } if (_Steps.Count == 1) { return(_Steps.FirstOrDefault()); } // Now we need to see if the Agent has just performed the social exchange var MethodCall = "LastEventId(Action-End," + target.ToString() + ", Speak(*, *, SE(" + SE.ToString() + "," + "[step]" + "), *), SELF) >= 0"; var lastStep = ""; var condSet = new ConditionSet(); condSet = new ConditionSet(); var cond = Condition.Parse(MethodCall); condSet = condSet.Add(cond); var result = condSet.Unify(this.m_kB, Name.SELF_SYMBOL, null); if (result != null) { if (result.FirstOrDefault() != null) { if (result.FirstOrDefault().Where(x => x.Variable == (Name)"[step]") != null) { lastStep = result.FirstOrDefault().Where(x => x.Variable == (Name)"[step]").FirstOrDefault().SubValue.Value.ToString(); } else { return(_Steps.FirstOrDefault()); } } else { return(_Steps.FirstOrDefault()); } } else { return(_Steps.FirstOrDefault()); } var ind = _Steps.IndexOf((Name)lastStep); if (ind + 1 == _Steps.Count) { return(_Steps.FirstOrDefault()); } else { return(_Steps[ind + 1]); } }