public void InitialValueTest() { string input = @" !A(3)[?], !B[?], !C(1)[freshid()];"; var p = new ResedaParser(); p.dispTree(input); var term = p.Generate(input); InputEvent a = (InputEvent)term.subProcess.structuredData[0]; InputEvent b = (InputEvent)term.subProcess.structuredData[1]; OutputEvent c = (OutputEvent)term.subProcess.structuredData[2]; System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource()); var term2 = p.Generate(term.subProcess.ToSource()); Assert.AreEqual(term.ToSource(), term2.ToSource()); Assert.AreEqual(c.marking.value.ToString(), "1"); Assert.AreEqual(a.marking.value.ToString(), "3"); Assert.IsNull(b.marking.value); c.Execute(); Assert.AreEqual(c.marking.value.ToString(), "4"); b.Execute(1); Assert.AreEqual(c.marking.value.ToString(), "4"); a.Execute(5); Assert.AreEqual(a.marking.value.ToString(), "5"); c.Execute(); Assert.AreEqual(c.marking.value.ToString(), "6"); /* * c.Execute(); * System.Diagnostics.Debug.WriteLine(c.ToSource()); * System.Diagnostics.Debug.WriteLine(c.marking.value); * Assert.AreEqual(c.marking.value.ToString(), "0"); * c.Execute(); * Assert.AreEqual(c.marking.value.ToString(), "1"); * a.Execute(3); * c.Execute(); * Assert.AreEqual(c.marking.value.ToString(), "4"); * * b.Execute(1); * c.Execute(); * Assert.AreEqual(c.marking.value.ToString(), "5"); * * b.Execute(10); * c.Execute(); * Assert.AreEqual(c.marking.value.ToString(), "11"); */ }
public void GuardedCondition() { string input = @"A[], B[], D[], C[]; A[(count(@/C)==0)] -->* B, D -->* C "; var p = new ResedaParser(); p.dispTree(input); var term = p.Generate(input); System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource()); var term2 = p.Generate(term.subProcess.ToSource()); Assert.AreEqual(term.ToSource(), term2.ToSource()); OutputEvent a = (OutputEvent)term.subProcess.structuredData[0]; OutputEvent b = (OutputEvent)term.subProcess.structuredData[1]; OutputEvent d = (OutputEvent)term.subProcess.structuredData[2]; OutputEvent c = (OutputEvent)term.subProcess.structuredData[3]; Assert.IsTrue(b.IsEnabled()); b.Execute(); Assert.IsFalse(c.IsEnabled()); Assert.ThrowsException <Exception>(() => { c.Execute(); }); }
public void BooleanExpresionTest() { string input = "A[?]," + "B[?]," + "C[@A:v + @B:v > 5 && !(@A:v - @B:v > 10)]" + "; "; var p = new ResedaParser(); p.dispTree(input); var term = p.Generate(input); var term2 = p.Generate(term.subProcess.ToSource()); Assert.AreEqual(term.ToSource(), term2.ToSource()); InputEvent a = (InputEvent)term.subProcess.structuredData[0]; InputEvent b = (InputEvent)term.subProcess.structuredData[1]; OutputEvent c = (OutputEvent)term.subProcess.structuredData[2]; a.Execute(3); b.Execute(5); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); c.Execute(); var val = (BoolType)c.marking.value; Assert.AreEqual(val.value, true); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); a.Execute(20); c.Execute(); val = (BoolType)c.marking.value; Assert.AreEqual(val.value, false); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); }
public void BPMTestThomas() { string input = @"orders[]{ create_order[?:@/customers/customer/customer_id:value] ; create_order -->>{ order[]{ !order_id[freshid()], !customer_id[@trigger:value] } } }, customers[]{ create_customer[?], customer[] { customer_id(0)[], customer_name('John')[] }, customer[]{ customer_id(1)[], customer_name('Mary')[] } ; create_customer -->> { customer[]{ !customer_id[freshid()], !customer_name[?] } } }"; var p = new ResedaParser(); p.dispTree(input); var term = p.Generate(input); System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource()); var term2 = p.Generate(term.subProcess.ToSource()); //Assert.AreEqual(term.ToSource(), term2.ToSource()); InputEvent create_order = (InputEvent)term.subProcess.structuredData[0].subProcess.structuredData[0]; create_order.Execute(1); System.Diagnostics.Debug.WriteLine(term.ToSource()); OutputEvent o1 = (OutputEvent)term.subProcess.structuredData[0].subProcess.structuredData[1].subProcess.structuredData[0]; OutputEvent o2 = (OutputEvent)term.subProcess.structuredData[0].subProcess.structuredData[1].subProcess.structuredData[1]; o1.Execute(); o2.Execute(); System.Diagnostics.Debug.WriteLine(term.ToSource()); }
public void CountTest() { string input = @" !A[?], !A[?], !C[count(@A)];"; var p = new ResedaParser(); p.dispTree(input); var term = p.Generate(input); OutputEvent c = (OutputEvent)term.subProcess.structuredData[2]; System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource()); var term2 = p.Generate(term.subProcess.ToSource()); Assert.AreEqual(term.ToSource(), term2.ToSource()); c.Execute(); System.Diagnostics.Debug.WriteLine(c.ToSource()); System.Diagnostics.Debug.WriteLine(c.marking.value); Assert.AreEqual(c.marking.value.ToString(), "2"); }
public void FilterTest() { string input = "A[]," + "B[]," + "B[]," + "C[]" + "; A -->* B[1]"; var p = new ResedaParser(); p.dispTree(input); var term = p.Generate(input); var term2 = p.Generate(term.subProcess.ToSource()); Assert.AreEqual(term.ToSource(), term2.ToSource()); OutputEvent a = (OutputEvent)term.subProcess.structuredData[0]; OutputEvent b0 = (OutputEvent)term.subProcess.structuredData[1]; OutputEvent b1 = (OutputEvent)term.subProcess.structuredData[2]; OutputEvent c = (OutputEvent)term.subProcess.structuredData[3]; b0.Execute(); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); try { b1.Execute(); Assert.Fail(); } catch { } System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); }
public void CurrentHackingTest() { string input = "A[?]," + "B[?]," + "C[@A:v + @B:v * 10]," + "D[]," + "E[]" + "; A -->* B," + " D -->> {N[?];}," + "E -->% *"; var p = new ResedaParser(); p.dispTree(input); //System.Diagnostics.Debug.WriteLine(p.Generate(input).PrintTree()); var term = p.Generate(input); System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource()); //var term2 = term.CloneJson(); var term2 = p.Generate(term.subProcess.ToSource()); InputEvent a = (InputEvent)term.subProcess.structuredData[0]; InputEvent b = (InputEvent)term.subProcess.structuredData[1]; OutputEvent c = (OutputEvent)term.subProcess.structuredData[2]; OutputEvent d = (OutputEvent)term.subProcess.structuredData[3]; OutputEvent e = (OutputEvent)term.subProcess.structuredData[4]; a.Execute(1); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); b.Execute(5); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); c.Execute(); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); d.Execute(); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); d.Execute(); System.Diagnostics.Debug.WriteLine(term.PrintTree(true)); System.Diagnostics.Debug.WriteLine("TERM 2"); a = (InputEvent)term2.subProcess.structuredData[0]; b = (InputEvent)term2.subProcess.structuredData[1]; c = (OutputEvent)term2.subProcess.structuredData[2]; d = (OutputEvent)term2.subProcess.structuredData[3]; e = (OutputEvent)term2.subProcess.structuredData[4]; System.Diagnostics.Debug.WriteLine(term2.PrintTree(true)); a.Execute(1); System.Diagnostics.Debug.WriteLine(term2.PrintTree(true)); b.Execute(5); System.Diagnostics.Debug.WriteLine(term2.PrintTree(true)); c.Execute(); System.Diagnostics.Debug.WriteLine(term2.PrintTree(true)); d.Execute(); System.Diagnostics.Debug.WriteLine(term2.PrintTree(true)); d.Execute(); System.Diagnostics.Debug.WriteLine(term2.PrintTree(true)); }