public void Can_LIFO_When_History_N_Plus2() { var careTaker = new HastingsCareTaker(); var subbedMemento1 = Substitute.For <IHastingsMemento>(); subbedMemento1.Peer.Returns(PeerIdHelper.GetPeerId("step1")); careTaker.Add(subbedMemento1); var subbedMemento2 = Substitute.For <IHastingsMemento>(); subbedMemento2.Peer.Returns(PeerIdHelper.GetPeerId("step2")); careTaker.Add(subbedMemento2); var subbedMemento3 = Substitute.For <IHastingsMemento>(); subbedMemento3.Peer.Returns(PeerIdHelper.GetPeerId("step3")); careTaker.Add(subbedMemento3); var lastState1 = careTaker.Get(); lastState1.Should().Be(subbedMemento3); careTaker.HastingMementoList.Count.Should().Be(2); careTaker.HastingMementoList.First().Should().Be(subbedMemento2); var lastState2 = careTaker.Get(); lastState2.Should().Be(subbedMemento2); careTaker.HastingMementoList.Count.Should().Be(1); careTaker.HastingMementoList.First().Should().Be(subbedMemento1); }
public static IHastingsCareTaker MockCareTaker(IEnumerable <IHastingsMemento> history = default) { var careTaker = new HastingsCareTaker(); history?.ToList().ForEach(m => { careTaker.Add(m); }); return(careTaker); }
public void Can_Get_From_HastingMementoList() { var careTaker = new HastingsCareTaker(); var subbedMemento = Substitute.For <IHastingsMemento>(); careTaker.Add(subbedMemento); careTaker.HastingMementoList.Should().Contain(subbedMemento); }
public void Can_Never_Take_Last_State_From_CareTaker() { var careTaker = new HastingsCareTaker(); var subbedMemento = Substitute.For <IHastingsMemento>(); careTaker.Add(subbedMemento); careTaker.Get(); careTaker.HastingMementoList.Count.Should().Be(1); }
public void Care_Taker_Can_Add_State_To_CareTaker() { var careTaker = new HastingsCareTaker(); var subbedMemento = Substitute.For <IHastingsMemento>(); careTaker.Add(subbedMemento); // ReSharper disable once ReturnValueOfPureMethodIsNotUsed careTaker.HastingMementoList?.Contains(subbedMemento); careTaker.HastingMementoList.Should().HaveCount(1); }
public void Can_Add_New_Mementos_To_Caretaker() { var careTaker = new HastingsCareTaker(); var stack = new Stack <IHastingsMemento>(); stack.Push(DiscoveryHelper.SubMemento(_ownNode)); var history = DiscoveryHelper.MockMementoHistory(stack); history.ToList().ForEach(m => careTaker.Add(m)); careTaker.HastingMementoList.Should().Contain(history); }
public void Care_Taker_Can_Get_Last_State() { var careTaker = new HastingsCareTaker(); var subbedMemento = Substitute.For <IHastingsMemento>(); careTaker.Add(subbedMemento); careTaker.Add(subbedMemento); careTaker.HastingMementoList.Should().HaveCount(2); var previousState = careTaker.Get(); previousState.Should().BeSameAs(subbedMemento); careTaker.HastingMementoList.Should().HaveCount(1); }
public void Taking_From_Memento_List_Takes_LIFO() { var careTaker = new HastingsCareTaker(); var stack = new Stack <IHastingsMemento>(); stack.Push(DiscoveryHelper.SubMemento(_ownNode)); var history = DiscoveryHelper.MockMementoHistory(stack); history.ToList().ForEach(m => careTaker.Add(m)); careTaker.Get().Should().Be(history.Last()); careTaker.HastingMementoList.First().Should().Be(history.First()); careTaker.HastingMementoList.Count.Should().Be(history.Count - 1); }
public void Evicted_Known_Ping_Message_Sets_Contacted_Neighbour_As_UnReachable_And_Can_RollBack_State() { var cacheEntriesByRequest = new Dictionary <ByteString, ICacheEntry>(); var seedState = DiscoveryHelper.MockSeedState(_ownNode, _settings); var seedOrigin = HastingsOriginator.Default; seedOrigin.RestoreMemento(seedState); var stateCareTaker = new HastingsCareTaker(); var stateHistory = new Stack <IHastingsMemento>(); stateHistory.Push(seedState); stateHistory = DiscoveryHelper.MockMementoHistory(stateHistory, 5); //this isn't an angry pirate this is just 5 stateHistory.Last().Neighbours.First().StateTypes = NeighbourStateTypes.Responsive; stateHistory.ToList().ForEach(i => stateCareTaker.Add(i)); var stateCandidate = DiscoveryHelper.MockOriginator(default,
public void Care_Taker_Should_Throw_Exception_Trying_To_Take_Last_State_From_Empty_CareTaker() { var careTaker = new HastingsCareTaker(); Assert.Throws <InvalidOperationException>(() => { careTaker.Get(); }); }
public void Can_Get_Nothing_From_Empty_HastingMementoList() { var careTaker = new HastingsCareTaker(); careTaker.HastingMementoList.Should().BeEmpty(); }