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