public void ChangeTokenCount_NonZeroTokensSingleActiveSuccessor_NoCallback() { // arrange Place testPlace = new Place(0, 0, "testPlace"); ITransition successor = new StubTransition("successor_1", new List<INode> { testPlace }, new List<INode> { }); successor.Enabled = true; testPlace.Successors.Clear(); testPlace.Successors.Add(successor); 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 is already active."); }
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_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_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 ChangeTokenCount_NonZeroTokensSingleInactiveSuccessorNoOtherPredecessors_CallbackTrue() { // arrange Place testPlace = new Place(0, 0, "testPlace"); IList<String> successorIds = new List<String> { "successor_1" }; ITransition successor_1 = new StubTransition(successorIds[0], new List<INode> { testPlace }, 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, has no " + "other predecessors and tokens are set to non-zero."); Assert.IsTrue(Compare.UnorderedEqual(successorIds, callbackIds), "Callback called with incorrect ids."); }
public void ChangeTokenCount_ZeroTokensTwoActiveSuccessorsOneInactive_CallbackFalseTwice() { // 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 = true; ITransition successor_2 = new StubTransition(successorIds[1], new List<INode> { testPlace }, new List<INode> { }); successor_2.Enabled = true; ITransition successor_3 = new StubTransition("successor_3", new List<INode> { testPlace }, new List<INode> { }); successor_3.Enabled = false; testPlace.Successors.Clear(); testPlace.Successors.Add(successor_1); testPlace.Successors.Add(successor_2); testPlace.Successors.Add(successor_3); // act testPlace.ChangeTokenCount(0, testCallback); // assert Assert.AreEqual(testPlace.TokenCount, 0, "Incorrect tokenCount was set."); Assert.AreEqual(false, callbackValue, "Deactivation of Transitions required when successor " + "is active and tokens are set to 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 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_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 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 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_SourceTransitionTargetTransition_ThrowsInvalidOperationException() { // arrange StubTransition sourceTrans = new StubTransition("sourceTrans", new List<INode> { }, new List<INode> { }); StubTransition targetTrans = new StubTransition("targetTrans", new List<INode> { }, new List<INode> { }); // act Arc testArc = new Arc(sourceTrans, targetTrans, "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 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 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); }