public void AddLoopTestGivenTransitionHardTest()
        {
            Model.PetriNet.PetriNet testNet = new Model.PetriNet.PetriNet("TestNet");
            Place start     = testNet.AddPlace("Start");
            Place midLeft1  = testNet.AddPlace("MidLeft1");
            Place midLeft2  = testNet.AddPlace("MidLeft2");
            Place midLeft3  = testNet.AddPlace("MidLeft3");
            Place midRight1 = testNet.AddPlace("MidRight1");
            Place midRight2 = testNet.AddPlace("MidRight2");
            Place midRight3 = testNet.AddPlace("MidRight3");
            Place end       = testNet.AddPlace("End");

            testNet.AddTransition("Left", incomingPlace: start, outgoingPlaces: new List <Place> {
                midLeft1, midLeft2, midLeft3
            });
            Transition testTransition = testNet.AddTransition("TestTransition", new List <Place> {
                midLeft1, midLeft2, midLeft3
            }, new List <Place> {
                midRight1, midRight2, midRight3
            });

            testNet.AddTransition("Right", new List <Place> {
                midRight1, midRight2, midRight3
            }, outgoingPlace: end);

            testNet.AddLoop(transition: testTransition);

            Assert.AreEqual(6, testNet.Transitions.Count);
            Assert.AreEqual(10, testNet.Places.Count);
            Assert.IsTrue(testNet.Transitions[3].IsLoop);
            Assert.AreEqual(testTransition, midLeft1.OutgoingTransitions[0].OutgoingPlaces[0].OutgoingTransitions[0]);
        }
        public void AddLoopTestNoParameter()
        {
            Model.PetriNet.PetriNet testNet = new Model.PetriNet.PetriNet("TestNet");

            testNet.AddLoop();

            Assert.AreEqual(0, testNet.Transitions.Count);
            Assert.AreEqual(0, testNet.Places.Count);
        }
        public void AddLoopTestNoParameter()
        {
            Model.PetriNet.PetriNet testNet = new Model.PetriNet.PetriNet("TestNet");

            testNet.AddLoop();

            Assert.AreEqual(0, testNet.Transitions.Count);
            Assert.AreEqual(0, testNet.Places.Count);
        }
        public void AddLoopTestGivenNameEasyTest()
        {
            Model.PetriNet.PetriNet testNet = new Model.PetriNet.PetriNet("TestNet");
            Place start = testNet.AddPlace("Start");
            Place end = testNet.AddPlace("End");
            testNet.AddTransition("TestTransition", incomingPlace: start, outgoingPlace: end);

            testNet.AddLoop("TestTransition");

            Assert.AreEqual(2, testNet.Transitions.Count);
            Assert.AreEqual(2, testNet.Places.Count);
            Assert.IsTrue(testNet.Transitions[1].IsLoop);
        }
        public void AddLoopTestGivenNameEasyTest()
        {
            Model.PetriNet.PetriNet testNet = new Model.PetriNet.PetriNet("TestNet");
            Place start = testNet.AddPlace("Start");
            Place end   = testNet.AddPlace("End");

            testNet.AddTransition("TestTransition", incomingPlace: start, outgoingPlace: end);

            testNet.AddLoop("TestTransition");

            Assert.AreEqual(2, testNet.Transitions.Count);
            Assert.AreEqual(2, testNet.Places.Count);
            Assert.IsTrue(testNet.Transitions[1].IsLoop);
        }
        public void AddLoopTestGivenTransitionHardTest()
        {
            Model.PetriNet.PetriNet testNet = new Model.PetriNet.PetriNet("TestNet");
            Place start = testNet.AddPlace("Start");
            Place midLeft1 = testNet.AddPlace("MidLeft1");
            Place midLeft2 = testNet.AddPlace("MidLeft2");
            Place midLeft3 = testNet.AddPlace("MidLeft3");
            Place midRight1 = testNet.AddPlace("MidRight1");
            Place midRight2 = testNet.AddPlace("MidRight2");
            Place midRight3 = testNet.AddPlace("MidRight3");
            Place end = testNet.AddPlace("End");
            testNet.AddTransition("Left", incomingPlace: start, outgoingPlaces: new List<Place> { midLeft1, midLeft2, midLeft3 });
            Transition testTransition = testNet.AddTransition("TestTransition", new List<Place> { midLeft1, midLeft2, midLeft3 }, new List<Place> { midRight1, midRight2, midRight3 });
            testNet.AddTransition("Right", new List<Place> { midRight1, midRight2, midRight3 }, outgoingPlace: end);

            testNet.AddLoop(transition: testTransition);

            Assert.AreEqual(6, testNet.Transitions.Count);
            Assert.AreEqual(10, testNet.Places.Count);
            Assert.IsTrue(testNet.Transitions[3].IsLoop);
            Assert.AreEqual(testTransition, midLeft1.OutgoingTransitions[0].OutgoingPlaces[0].OutgoingTransitions[0]);
        }