Beispiel #1
0
        public void Add_SourcePlaceNoTokensOnlyIncomingArcOnTarget_CallbackFalse()
        {
            // arrange
            StubPlace source = new StubPlace("testSource", new List<INode> { }, new List<INode> { });
            source.TokenCount = 0;
            StubTransition target = new StubTransition("testTarget", new List<INode> { }, new List<INode> { });
            Arc testArc = new Arc(source, target, "testArc");
            source.Arcs = new List<IArc> { testArc };
            target.Arcs = new List<IArc> { testArc };

            // act
            testArc.Add(testCallback);

            // assert
            Assert.AreEqual(false, callbackCalled, "Callback required when arc is only incoming arc on target" +
                                                   "and source is place without tokens.");
            Assert.AreEqual("testTarget", callbackId, "Target id should be used in callback.");
        }
Beispiel #2
0
        public void Add_SourcePlaceNoTokensSecondIncomingArcOnTargetSourceNoTokens_NoCallback()
        {
            // arrange
            StubPlace source = new StubPlace("testSource", new List<INode> { }, new List<INode> { });
            source.TokenCount = 0;
            StubPlace secondPredecessor = new StubPlace("testSecondPredecessor", new List<INode> { }, new List<INode> { });
            secondPredecessor.TokenCount = 0;
            StubTransition target = new StubTransition("testTarget", new List<INode> { secondPredecessor }, new List<INode> { });
            Arc testArc = new Arc(source, target, "testArc");
            source.Arcs = new List<IArc> { testArc };
            target.Arcs = new List<IArc> { testArc };

            // act
            testArc.Add(testCallback);

            // assert
            Assert.IsNull(callbackCalled, "No callback should occur when target already has predecessor with no tokens.");
        }
Beispiel #3
0
        public void Add_SourcePlaceNoTokensSecondIncomingArcOnTargetSourceTokens_CallbackFalse()
        {
            // arrange
            StubPlace source = new StubPlace("testSource", new List<INode> { }, new List<INode> { });
            source.TokenCount = 0;
            StubPlace secondPredecessor = new StubPlace("testSecondPredecessor", new List<INode> { }, new List<INode> { });
            secondPredecessor.TokenCount = new Random().Next(1, 999);
            StubTransition target = new StubTransition("testTarget", new List<INode> { secondPredecessor }, new List<INode> { });
            Arc testArc = new Arc(source, target, "testArc");
            source.Arcs = new List<IArc> { testArc };
            target.Arcs = new List<IArc> { testArc };

            // act
            testArc.Add(testCallback);

            // assert
            Assert.AreEqual(false, callbackCalled, "Callback required when all other predecessors of target have tokens.");
            Assert.AreEqual("testTarget", callbackId, "Target id should be used in callback.");
        }
        public void InverseTransitionTokens_NoSuccessorsTwoPredecessors_CallbackTwice()
        {
            // arrange
            Transition testTrans = new Transition(0, 0, "testTransition");
            testTrans.Successors.Clear();
            IList<String> predecessorIds = new List<String> { "predecessor_1", "predecessor_2" };
            int tokenCount = new Random().Next(0, 999);
            StubPlace predecessor_1 = new StubPlace(predecessorIds[0], new List<INode> { testTrans }, new List<INode> { });
            predecessor_1.TokenCount = tokenCount;
            StubPlace predecessor_2 = new StubPlace(predecessorIds[1], new List<INode> { testTrans }, new List<INode> { });
            predecessor_2.TokenCount = tokenCount;
            testTrans.Predecessors.Clear();
            testTrans.Predecessors.Add(predecessor_1);
            testTrans.Predecessors.Add(predecessor_2);

            // act
            testTrans.InverseTransitionTokens((s, b) => { }, testCallback);

            // assert
            Assert.IsTrue(Compare.UnorderedEqual(predecessorIds, callbackIds), "Callback called with incorrect ids.");
            Assert.AreEqual(tokenCount + 1, predecessor_2.TokenCount, "TokenCount not increased correctly.");
        }
Beispiel #5
0
        public void ChangeTokenCount_NonZeroTokensSingleInactiveSuccessorOneOtherPredecessorNonZeroTokens_CallbackTrue()
        {
            // arrange
            Place testPlace = new Place(0, 0, "testPlace");
            StubPlace otherPredecessor = new StubPlace("otherPredecessor", new List<INode> { }, new List<INode> { });
            otherPredecessor.TokenCount = new Random().Next(1, 999);
            IList<String> successorIds = new List<String> { "successor_1" };
            ITransition successor_1 = new StubTransition(successorIds[0], new List<INode> { testPlace, otherPredecessor }, new List<INode> { });
            successor_1.Enabled = false;
            testPlace.Successors.Clear();
            testPlace.Successors.Add(successor_1);
            int tokenCount = new Random().Next(1, 999);

            // act
            testPlace.ChangeTokenCount(tokenCount, testCallback);

            // assert
            Assert.AreEqual(testPlace.TokenCount, tokenCount, "Incorrect tokenCount was set.");
            Assert.AreEqual(true, callbackValue, "Activation of Transition required when successor is inactive, other predecessors " +
                                                 "have non-zero tokens and tokens are set to non-zero.");
            Assert.IsTrue(Compare.UnorderedEqual(successorIds, callbackIds), "Callback called with incorrect ids.");
        }
Beispiel #6
0
        public void ChangeTokenCount_NonZeroTokensThreeInactiveSuccessorsOneActive_CallbackTrueFalseTwice()
        {
            // arrange
            Place testPlace = new Place(0, 0, "testPlace");
            IList<String> successorIds = new List<String> { "successor_1", "successor_2" };
            ITransition successor_1 = new StubTransition(successorIds[0], new List<INode> { testPlace }, new List<INode> { });
            successor_1.Enabled = false;
            StubPlace nonZeroTokensPredecessor = new StubPlace("predecessor_1", new List<INode> { }, new List<INode> { });
            nonZeroTokensPredecessor.TokenCount = new Random().Next(1, 999);
            ITransition successor_2 = new StubTransition(successorIds[1], new List<INode> { testPlace, nonZeroTokensPredecessor }, new List<INode> { });
            successor_2.Enabled = false;
            StubPlace zeroTokensPredecessor = new StubPlace("predecessor_2", new List<INode> { }, new List<INode> { });
            zeroTokensPredecessor.TokenCount = 0;
            ITransition successor_3 = new StubTransition("successor_3", new List<INode> { testPlace, zeroTokensPredecessor }, new List<INode> { });
            successor_3.Enabled = false;
            ITransition successor_4 = new StubTransition("successor_4", new List<INode> { testPlace }, new List<INode> { });
            successor_4.Enabled = true;
            int tokenCount = new Random().Next(1, 999);

            testPlace.Successors.Clear();
            testPlace.Successors.Add(successor_1);
            testPlace.Successors.Add(successor_2);
            testPlace.Successors.Add(successor_3);
            testPlace.Successors.Add(successor_4);

            // act
            testPlace.ChangeTokenCount(tokenCount, testCallback);

            // assert
            Assert.AreEqual(testPlace.TokenCount, tokenCount, "Incorrect tokenCount was set.");
            Assert.AreEqual(true, callbackValue, "Activation of Transitions required when there are no other predecessors " +
                                                 "or only prececessors with non-zero tokens.");
            Assert.IsTrue(Compare.UnorderedEqual(successorIds, callbackIds), "Callback called with incorrect ids.");
        }
Beispiel #7
0
        public void Add_SourcePlaceTokensTargetTrans_NoCallback()
        {
            // arrange
            StubPlace source = new StubPlace("testSource", new List<INode> { }, new List<INode> { });
            source.TokenCount = new Random().Next(1, 999);
            StubTransition target = new StubTransition("testTarget", new List<INode> { }, new List<INode> { });
            Arc testArc = new Arc(source, target, "testArc");
            source.Arcs = new List<IArc> { testArc };
            target.Arcs = new List<IArc> { testArc };

            // act
            testArc.Add(testCallback);

            // assert
            Assert.IsNull(callbackCalled, "No callback should occur when source has tokens.");
        }
Beispiel #8
0
        public void Remove_SourceTransTargetPlace_NoCallback()
        {
            // arrange
            StubTransition source = new StubTransition("testSource", new List<INode> { }, new List<INode> { });
            StubPlace target = new StubPlace("testTarget", new List<INode> { }, new List<INode> { });
            Arc testArc = new Arc(source, target, "testArc");
            source.Arcs = new List<IArc> { testArc };
            target.Arcs = new List<IArc> { testArc };

            // act
            testArc.Remove(testCallback);

            // assert
            Assert.IsNull(callbackCalled, "No callback should occur when target is Place.");
        }
Beispiel #9
0
        public void Equals_CompareToString_ReturnsFalse()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });
            StubTransition targetTrans = new StubTransition("targetTrans", new List<INode> { }, new List<INode> { });
            Arc testArc = new Arc(sourcePlace, targetTrans, "testArc");

            // act
            bool result = testArc.Equals("testString");

            // assert
            Assert.IsFalse(result, "Comparison with other type should always return false.");
        }
        public void TransitionTokens_OneSuccessorZeroTokens_ThrowsInvalidOperationException()
        {
            // arrange
            Transition testTrans = new Transition(0, 0, "testTransition");
            testTrans.Predecessors.Clear();
            IList<String> successorIds = new List<String> { "successor_1" };
            StubPlace successor_1 = new StubPlace(successorIds[0], new List<INode> { }, new List<INode> { testTrans });
            successor_1.TokenCount = 0;
            testTrans.Successors.Clear();
            testTrans.Successors.Add(successor_1);

            // act
            testTrans.InverseTransitionTokens((s, b) => { }, testCallback);
        }
Beispiel #11
0
        public void Equals_CompareToDifferentArc_ReturnsFalse()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });
            StubTransition targetTrans = new StubTransition("targetTrans", new List<INode> { }, new List<INode> { });
            Arc testArc = new Arc(sourcePlace, targetTrans, "testArc");
            Arc differentArc = new Arc(sourcePlace, targetTrans, "differentArc");

            // act
            bool result = testArc.Equals(differentArc);

            // assert
            Assert.IsFalse(result, "Comparison with arc with different id should return false.");
        }
Beispiel #12
0
        public void ArcConstructor_TargetNull_ThrowsArgumentNullException()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });

            // act
            Arc testArc = new Arc(sourcePlace, null, "testArc");
        }
Beispiel #13
0
        public void ArcConstructor_SourcePlaceTargetPlace_ThrowsInvalidOperationException()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });
            StubPlace targetPlace = new StubPlace("targetPlace", new List<INode> { }, new List<INode> { });

            // act
            Arc testArc = new Arc(sourcePlace, targetPlace, "testArc");
        }
Beispiel #14
0
        public void ArcConstructor_IdNull_ThrowsArgumentNullException()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });
            StubTransition targetTrans = new StubTransition("targetTrans", new List<INode> { }, new List<INode> { });

            // act
            Arc testArc = new Arc(sourcePlace, targetTrans, null);
        }
Beispiel #15
0
        public void ArcConstructor_AllLegalParameters_ConstructsValidArc()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });
            StubTransition targetTrans = new StubTransition("targetTrans", new List<INode> { }, new List<INode> { });

            // act
            Arc testArc = new Arc(sourcePlace, targetTrans, "testArc");

            // assert
            Assert.IsNotNull(testArc);
        }
Beispiel #16
0
        public void Equals_CompareToSameArc_ReturnsTrue()
        {
            // arrange
            StubPlace sourcePlace = new StubPlace("sourcePlace", new List<INode> { }, new List<INode> { });
            StubTransition targetTrans = new StubTransition("targetTrans", new List<INode> { }, new List<INode> { });
            Arc testArc = new Arc(sourcePlace, targetTrans, "testArc");

            // act
            bool result = testArc.Equals(testArc);

            // assert
            Assert.IsTrue(result, "Comparison with same arc should return true.");
        }
Beispiel #17
0
        public void ChangeTokenCount_NonZeroTokensSingleInactiveSuccessorOneOtherPredecessorZeroTokens_CallbackFalse()
        {
            // arrange
            Place testPlace = new Place(0, 0, "testPlace");
            StubPlace otherPredecessor = new StubPlace("otherPredecessor", new List<INode> { }, new List<INode> { });
            otherPredecessor.TokenCount = 0;
            IList<String> successorIds = new List<String> { "successor_1" };
            ITransition successor_1 = new StubTransition(successorIds[0], new List<INode> { testPlace, otherPredecessor }, new List<INode> { });
            successor_1.Enabled = false;
            testPlace.Successors.Clear();
            testPlace.Successors.Add(successor_1);
            int tokenCount = new Random().Next(1, 999);

            // act
            testPlace.ChangeTokenCount(tokenCount, testCallback);

            // assert
            Assert.AreEqual(testPlace.TokenCount, tokenCount, "Incorrect tokenCount was set.");
            Assert.AreEqual(0, callbackIds.Count, "No callback should occur when successor has other predecessor with zero tokens.");
        }
Beispiel #18
0
 private void SetUpBasicFactoryDummies()
 {
     StubTransition dummyTrans = new StubTransition("dummyTrans", new List<INode> { }, new List<INode> { });
     ElementFactory.SetCustomTransition(dummyTrans);
     StubPlace dummyPlace = new StubPlace("dummyPlace", new List<INode> { }, new List<INode> { });
     ElementFactory.SetCustomPlace(dummyPlace);
     StubArc dummyArc = new StubArc("dummyArc");
     ElementFactory.SetCustomArc(dummyArc);
 }