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 } });
        }