public void TestBifurcatingTransition() { var m = new Marking(3, new Dictionary<int, int> { { (int)Places.p1, 0 }, { (int)Places.p2, 0 }, { (int)Places.p3, 0 } }); var p = CreatePetriNet.Parse(StdPetriNets.Bifurcation).CreateNet<GraphPetriNet>(); m.Assert(p.Places, new Dictionary<string, int>{ { "p1", 0 }, { "p2", 0 }, { "p3", 0 } }); m.Set(p.Places, "p1", 1); m.Assert(p.Places, new Dictionary<string, int>{ { "p1", 1 }, { "p2", 0 }, { "p3", 0 } }); m = p.Fire(m); m.Assert(p.Places, new Dictionary<string, int>{ { "p1", 0 }, { "p2", 1 }, { "p3", 1 } }); }
public void TestMultiEnabledPetriNet() { var m = new Marking(4, new Dictionary<int, int> { { (int)Places.p1, 0 }, { (int)Places.p2, 0 }, { (int)Places.p3, 0 }, { (int)Places.p4, 0 } }); var p = CreatePetriNet.Parse(StdPetriNets.MultiEnabled).CreateNet<GraphPetriNet>(); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 0 }, { "p2", 0 }, { "p3", 0 }, { "p4", 0 } }); m.Set(p.Places, "p1", 1); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 1 }, { "p2", 0 }, { "p3", 0 }, { "p4", 0 } }); m = p.Fire(m); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 0 }, { "p2", 1 }, { "p3", 0 }, { "p4", 0 } }); m = p.Fire(m); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 0 }, { "p2", 0 }, { "p3", 1 }, { "p4", 0 } }); m.Set(p.Places, "p4", 1); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 0 }, { "p2", 0 }, { "p3", 1 }, { "p4", 1 } }); m = p.Fire(m); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 0 }, { "p2", 1 }, { "p3", 1 }, { "p4", 0 } }); m = p.Fire(m); m.Assert(p.Places, new Dictionary<string, int> {{ "p1", 0 }, { "p2", 0 }, { "p3", 2 }, { "p4", 0 } }); }