public void GivenCyclicDependency_FiresUpdateFailedEvent() { //Arrange bool eventFired = false; var alfa = new Alfa(); var beta = new Beta(alfa); var nodeA = new PropertyNode(nameof(alfa.A), alfa); var nodeB = new PropertyNode(nameof(alfa.B), alfa); var nodeD = new PropertyNode(nameof(beta.D), beta); var reactor = new Reactor("R1"); reactor.CreateDependency(nodeA, nodeB); reactor.CreateDependency(nodeB, nodeD); reactor.CreateDependency(nodeD, nodeA); reactor.UpdateFailed += delegate { eventFired = true; }; //Act reactor.PerformUpdate(); //Assert Assert.IsTrue(eventFired); }
public void AddPredecessor_AddingItself_ThrowsException() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); //Act nodeA.AddPredecessor(nodeA); }
public void AddPredecessor_GivenNullNode_ThrowsException() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); //Act nodeA.AddPredecessor(null); }
public void CreateDependency_GivenPredecessorAndSuccessorAreSame_ThrowsException() { //Arrange var obj = new Alfa(); var node = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); //Act reactor.CreateDependency(node, node); }
public void Constructor_GivenValidArguments_IdentifierIsGenerated() { //Arrange var obj = new Alfa(); //Act var node = new PropertyNode(nameof(obj.A), obj); //Assert Assert.IsTrue(node.Identifier != 0); }
/// <summary> /// Получить экземпляр результат по параметрам /// </summary> /// <returns></returns> public Result ToResult() { Result result = new Result(); result.ListX.Add((Vector)X0.Clone()); if (P != null) { result.ListP.Add((Vector)P.Clone()); } result.Alfas = (Vector)Alfa.Clone(); return(result); }
public void Constructor_GivenDifferentObjectMemberPair_NodesAreNotEqual() { //Arrange var obj = new Alfa(); //Act var node1 = new PropertyNode(nameof(obj.A), obj); var node2 = new PropertyNode(nameof(obj.B), obj); //Assert Assert.AreNotEqual(node1, node2); }
public void Constructor_GivenDifferentObjectMemberPair_NodeHaveSameIdentifier() { //Arrange var obj = new Alfa(); //Act var node1 = new PropertyNode(nameof(obj.A), obj); var node2 = new PropertyNode(nameof(obj.B), obj); //Assert Assert.IsFalse(node1.Identifier == node2.Identifier); }
public void AddNode_GivenValidNode_NodeIsAdded() { //Arrange var obj = new Alfa(); var node = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); //Act reactor.AddNode(node); //Assert Assert.IsTrue(reactor.GetNode(node.Identifier) != null); }
public void PerformUpdate_GivenEmptyGraph1_ReturnsEmptyUpdateLog() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); //Act reactor.PerformUpdate(nodeA); //Assert Assert.IsTrue(reactor.LastUpdateLog.Count == 0); }
public void GetNode_GivenNoMatchingNode2_ReturnsNull() { //Arrange var obj = new Alfa(); var node = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); //Act var fetchedNode = reactor.GetNode(node.Identifier); //Assert Assert.IsNull(fetchedNode); }
public void Constructor_GivenValidArguments_CreatesReactiveNode() { //Arrange var obj = new Alfa(); //Act var node = new PropertyNode(nameof(obj.A), obj); //Assert Assert.IsTrue(node != null && node.Member == nameof(obj.A) && node.Owner == obj); }
public void AddPredecessor_GivenValidNode_PredecessorIsAdded() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var nodeB = new PropertyNode(nameof(obj.B), obj); //Act nodeB.AddPredecessor(nodeA); //Assert Assert.IsTrue(nodeB.Predecessors.Contains(nodeA)); }
public void RemovePredecessor_GivenExistingPredecessor_PredecessorIsRemoved() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var nodeB = new PropertyNode(nameof(obj.B), obj); nodeB.AddPredecessor(nodeA); //Act nodeB.RemovePredecessor(nodeA); //Assert Assert.IsFalse(nodeB.Predecessors.Contains(nodeA)); }
public void RemoveSuccessor_GivenExistingSuccessor_SuccessorIsRemoved() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var nodeB = new PropertyNode(nameof(obj.B), obj); nodeA.AddSuccessor(nodeB); //Act nodeA.RemoveSuccessor(nodeB); //Assert Assert.IsFalse(nodeA.Successors.Contains(nodeB)); }
public void AddPredecessor_GivenAlreadyExistingPredecessor_PredecessorIsNotAdded() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var nodeB = new PropertyNode(nameof(obj.B), obj); nodeA.AddPredecessor(nodeB); //Act nodeA.AddPredecessor(nodeB); //Assert Assert.IsTrue(nodeA.Predecessors.Count == 1); }
public void AddNode_GivenExistingNode_NodeIsNotAdded() { //Arrange var obj = new Alfa(); var node = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); reactor.AddNode(node); //Act reactor.AddNode(node); //Assert Assert.IsTrue(reactor.Nodes.Count == 1); }
public void RemoveNode_GivenExistingNode_NodeIsRemoved() { //Arrange var obj = new Alfa(); var node = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); reactor.AddNode(node); //Act reactor.RemoveNode(node); //Assert Assert.IsTrue(reactor.GetNode(node.Identifier) == null); }
public void GetNode_GivenExistingNode1_ReturnsMatchingNode() { //Arrange var obj = new Alfa(); var node = new PropertyNode(nameof(obj.A), obj); var reactor = new Reactor("R1"); reactor.AddNode(node); //Act var fetchedNode = reactor.GetNode(node.Member, node.Owner); //Assert Assert.IsNotNull(fetchedNode); }
public void PerformUpdate_GivenCompleteUpdateRequested_PerformsCorrectUpdate() { //Arrange var alfa = new Alfa(); var beta = new Beta(alfa); var gama = new Gama(alfa, beta); var nodeA = new PropertyNode(nameof(alfa.A), alfa); var nodeB = new PropertyNode(nameof(alfa.B), alfa); var nodeC = new PropertyNode(nameof(beta.C), beta); var nodeD = new PropertyNode(nameof(beta.D), beta); var nodeE = new PropertyNode(nameof(gama.E), gama); var nodeF = new PropertyNode(nameof(gama.F), gama); var reactor = new Reactor("R1"); reactor.CreateDependency(nodeA, nodeE); reactor.CreateDependency(nodeA, nodeB); reactor.CreateDependency(nodeA, nodeD); reactor.CreateDependency(nodeC, nodeD); reactor.CreateDependency(nodeB, nodeE); reactor.CreateDependency(nodeB, nodeF); reactor.CreateDependency(nodeD, nodeF); reactor.CreateDependency(nodeE, nodeF); //Act reactor.PerformUpdate(); //Assert var updateLog = reactor.LastUpdateLog; int indexA = updateLog.IndexOf(nodeA); int indexB = updateLog.IndexOf(nodeB); int indexC = updateLog.IndexOf(nodeC); int indexD = updateLog.IndexOf(nodeD); int indexE = updateLog.IndexOf(nodeE); int indexF = updateLog.IndexOf(nodeF); Assert.IsTrue(updateLog.Count == 6); Assert.IsTrue(indexF > indexB && indexF > indexD && indexF > indexE); Assert.IsTrue(indexE > indexB && indexE > indexA); Assert.IsTrue(indexB > indexA); Assert.IsTrue(indexD > indexA && indexD > indexC); }
/// <summary> /// Получить дубликат /// </summary> /// <returns></returns> public object Clone() { Params clone = new Params(); if (X0 != null) { clone.X0 = (Vector)X0.Clone(); } if (P != null) { clone.P = (Vector)P.Clone(); } if (Alfa != null) { clone.Alfa = (Vector)Alfa.Clone(); } clone.H = H; clone.Y = Y; return(clone); }
public void CreateDependency_GivenValidPredecessorAndSuccessor_DependencyCreated() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var nodeB = new PropertyNode(nameof(obj.B), obj); var reactor = new Reactor("R1"); //Act reactor.CreateDependency(nodeA, nodeB); //Assert var predecessor = reactor.GetNode(nodeA.Identifier); var successor = reactor.GetNode(nodeB.Identifier); Assert.IsTrue(predecessor != null && successor != null && predecessor.Successors.Contains(successor) && successor.Predecessors.Contains(predecessor)); }
public void RemoveDependency_GivenValidDependency_DependencyRemoved() { //Arrange var obj = new Alfa(); var nodeA = new PropertyNode(nameof(obj.A), obj); var nodeB = new PropertyNode(nameof(obj.B), obj); var reactor = new Reactor("R1"); reactor.CreateDependency(nodeA, nodeB); //Act reactor.RemoveDependency(nodeA, nodeB); //Assert var predecessor = reactor.GetNode(nodeA.Identifier); var successor = reactor.GetNode(nodeB.Identifier); Assert.IsTrue(predecessor.Successors.Contains(successor) == false && successor.Predecessors.Contains(predecessor) == false); }
public void GivenUpdateIsSuccessful_FiresUpdateSuccessfulEvent() { //Arrange bool eventFired = false; var alfa = new Alfa(); var nodeA = new PropertyNode(nameof(alfa.A), alfa); var nodeB = new PropertyNode(nameof(alfa.B), alfa); var reactor = new Reactor("R1"); reactor.CreateDependency(nodeA, nodeB); reactor.UpdateSuccessful += delegate { eventFired = true; }; //Act reactor.PerformUpdate(); //Assert Assert.IsTrue(eventFired); }
/// <summary> /// Привести к строке /// </summary> /// <returns></returns> new public string ToString() { string str = ""; if (X0 != null) { str += "\tX0: " + X0.ToString().Replace("\t", "\t\t"); } if (P != null) { str += "\tP: " + P.ToString().Replace("\t", "\t\t"); } if (Alfa != null) { str += "\tAlfa: " + Alfa.ToString().Replace("\t", "\t\t"); } str += "\tH: " + H + ";\n"; if (Y != null) { str += "\tFunction: " + Y.ToString().Replace("\t", "\t\t") + ";\n"; } return(str); }
public override string ToString() { return("Alfa : ( " + Alfa.ToString() + "), Beta : (" + Beta.ToString() + "), Center : (" + Center.ToString() + ")"); }