public void FindAll2() { string[] lines = { "CHAT c0", "FIND {dev=1,day=fri}", "CHAT c1 {day=fri}", "CHAT c2 {dev=2,day=fri}", "CHAT c3 {}" }; string contents = String.Join("\n", lines); List <Chat> chats = ChatParser.ParseText(contents, NO_VALIDATORS); //chats.ForEach((ch) => Console.WriteLine(ch.ToTree())); Command finder = chats[0].commands[0]; finder.Resolve(null); Assert.That(chats[0].commands[0].GetType(), Is.EqualTo(typeof(Find))); chats = new ChatRuntime(chats).DoFindAll((Find)finder, null); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(2)); Assert.That(chats[0], Is.Not.Null); Assert.That(chats[0].text, Is.EqualTo("c1")); lines = new[] { "CHAT c0", "FIND {!dev=1,day=fri}", "CHAT c1 {day=fri}", "CHAT c2 {dev=2,day=fri}", "CHAT c3 {}" }; contents = String.Join("\n", lines); chats = ChatParser.ParseText(contents, NO_VALIDATORS); //chats.ForEach((ch) => Console.WriteLine(ch.ToTree())); finder = chats[0].commands[0]; finder.Resolve(null); var mdev = finder.GetMeta("dev"); Assert.That(mdev is Constraint, Is.True); Constraint cons = (Constraint)mdev; Assert.That(cons.type, Is.EqualTo(ConstraintType.Hard)); Assert.That(cons.IsStrict(), Is.True); Assert.That(finder.GetType(), Is.EqualTo(typeof(Find))); var rt = new ChatRuntime(chats); rt.Chats().ForEach(c => c.Resolve(null)); chats = rt.DoFindAll((Find)finder, null); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(0)); }
public void FindAllOpsHard() { string[] lines = { "CHAT c0", "FIND {!dev>1,day=fri}", "CHAT c1 {dev=2,day=fri}", "CHAT c2 {dev=1,day=fri}", "CHAT c3 {}" }; string contents = String.Join("\n", lines); List <Chat> chats = ChatParser.ParseText(contents, NO_VALIDATORS); //chats.ForEach((ch) => Console.WriteLine(ch.ToTree())); Command finder = chats[0].commands[0]; finder.Resolve(null); Assert.That(chats[0].commands[0].GetType(), Is.EqualTo(typeof(Find))); ChatRuntime cr = new ChatRuntime(chats); chats = cr.DoFindAll((Find)finder, null); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(1)); Assert.That(chats[0], Is.Not.Null); Assert.That(chats[0].text, Is.EqualTo("c1")); lines = new[] { "CHAT c0", "FIND {dev<2,!day=fri}", "CHAT c1 {dev=2,day=fri}", "CHAT c2 {dev=1,day=fri}", "CHAT c3 {}" }; contents = String.Join("\n", lines); chats = ChatParser.ParseText(contents, NO_VALIDATORS); //chats.ForEach((ch) => Console.WriteLine(ch.ToTree())); finder = chats[0].commands[0]; finder.Resolve(null); Assert.That(chats[0].commands[0].GetType(), Is.EqualTo(typeof(Find))); cr = new ChatRuntime(chats); chats = cr.DoFindAll((Find)finder, null); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(1)); Assert.That(chats[0], Is.Not.Null); Assert.That(chats[0].text, Is.EqualTo("c2")); }
public void FindAll() { string[] lines = { "CHAT c1 {day=fri}", "CHAT c2 {dev=2,day=fri}", "CHAT c3 {}" }; string contents = String.Join("\n", lines); List <Chat> chats = ChatParser.ParseText(contents, NO_VALIDATORS); List <Chat> result = new ChatRuntime(chats).DoFindAll(null, new Constraint("dev", "1"), new Constraint("day", "fri") ); Assert.That(result, Is.Not.Null); Assert.That(result.Count, Is.EqualTo(2)); Assert.That(result[0].text, Is.EqualTo("c1")); Chat c; chats = new List <Chat>(); chats.Add(c = Chat.Create("c1")); chats.Add(c = Chat.Create("c2")); c.SetMeta("dev", "1"); c.SetMeta("day", "hello"); chats.Add(c = Chat.Create("c3")); ChatRuntime cr = new ChatRuntime(chats); chats = cr.DoFindAll(null, new Constraint("dev", "1")); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(3)); Assert.That(chats[0].text, Is.EqualTo("c2")); chats = new List <Chat>(); chats.Add(c = Chat.Create("c1")); c.SetMeta("dev", "2"); chats.Add(c = Chat.Create("c2")); c.SetMeta("dev", "1"); c.SetMeta("day", "hello"); chats.Add(c = Chat.Create("c3")); cr = new ChatRuntime(chats); chats = cr.DoFindAll(null, new Constraint("dev", "1")); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(2)); Assert.That(chats[0].text, Is.EqualTo("c2")); Assert.That(chats[1].text, Is.EqualTo("c3")); }
public void Staleness() { Chat c; List <Chat> chats = new List <Chat>(); chats.Add(c = Chat.Create("c1")); c.SetMeta("dev", "hello"); c.Staleness(2); chats.Add(c = Chat.Create("c2")); c.SetMeta("dev", "2"); c.Staleness(3); chats.Add(c = Chat.Create("c3")); c.SetMeta("dev", "3"); c.Staleness(4); var res = new ChatRuntime(chats).DoFindAll (null, new Constraint(Operator.LT, "staleness", "3")); Assert.That(res.Count, Is.EqualTo(1)); Assert.That(res[0].text, Is.EqualTo("c1")); string[] lines = { "CHAT c0", "FIND {dev=1,day=fri,staleness<5}", "CHAT c1 {day=fri}", "CHAT c2 {dev=2,day=fri}", "CHAT c3 {}" }; string contents = String.Join("\n", lines); chats = ChatParser.ParseText(contents, NO_VALIDATORS); Command finder = chats[0].commands[0]; finder.Resolve(null); Assert.That(finder.GetType(), Is.EqualTo(typeof(Find))); var crt = new ChatRuntime(chats); c = crt.FindChatByLabel("#c1"); c.Staleness(6); Assert.That(c, Is.Not.Null); Assert.That(c.text, Is.EqualTo("c1")); chats = crt.DoFindAll((Find)finder, null); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(1)); Assert.That(chats[0], Is.Not.Null); Assert.That(chats[0].text, Is.EqualTo("c3")); }
public void FindAllHard() { Chat c; List <Chat> chats = new List <Chat>(); chats.Add(c = Chat.Create("c1")); chats.Add(c = Chat.Create("c2")); c.SetMeta("dev", "1"); c.SetMeta("day", "hello"); chats.Add(c = Chat.Create("c3")); ChatRuntime cr = new ChatRuntime(chats); chats = cr.DoFindAll(null, new Constraint("dev", "1", ConstraintType.Hard)); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(1)); Assert.That(chats[0].text, Is.EqualTo("c2")); }
public void FindAllHard3() { var lines = new string[] { "CHAT c0", "FIND {dev=1,!day=fri}", "CHAT c1 {day=fri}", "CHAT c2 {dev=2,day=fri}", "CHAT c3 {}" }; var contents = String.Join("\n", lines); var chats = ChatParser.ParseText(contents, NO_VALIDATORS); //chats.ForEach((ch) => Console.WriteLine(ch.ToTree())); var finder = chats[0].commands[0]; finder.Resolve(null); Assert.That(chats[0].commands[0].GetType(), Is.EqualTo(typeof(Find))); var mday = finder.GetMeta("day"); Assert.That(mday is Constraint, Is.True); var cons = (Dialogic.Constraint)mday; Assert.That(cons.type, Is.EqualTo(ConstraintType.Hard)); Assert.That(cons.IsStrict, Is.True); var cr = new ChatRuntime(chats); chats = cr.DoFindAll((Find)finder, null); //chats.ForEach((obj) => Console.WriteLine(obj.text)); Assert.That(chats, Is.Not.Null); Assert.That(chats.Count, Is.EqualTo(1)); Assert.That(chats[0], Is.Not.Null); Assert.That(chats[0].text, Is.EqualTo("c1")); }