public ImmutableState(AddressSwitcher switcher, bool primary, DateTimeOffset validUntil) { _switcher = switcher; _primary = primary; ValidUntil = validUntil; }
public void Test01_После_инициализации_получаем_первичный_адрес() { // arrange var now = new DateTime(2020, 02, 12); var time = new FixedTime(now); var switcher = new AddressSwitcher(PrimaryUrl, SecondaryUrl, Timeframe, time); // act var state = switcher.GetState(); // assert state.Url.Should().BeEquivalentTo(PrimaryUrl); state.ValidUntil.Should().Be(DateTimeOffset.MaxValue); }
public void Test02_Переключение_на_вторичный_адрес_происходит_корректно() { // arrange var now = new DateTime(2020, 02, 12); var time = new FixedTime(now); var switcher = new AddressSwitcher(PrimaryUrl, SecondaryUrl, Timeframe, time); // act var state = switcher.GetState(); state.Toggle(); // переключили на SecondaryUrl state = switcher.GetState(); // assert state.Url.Should().BeEquivalentTo(SecondaryUrl); state.ValidUntil.Should().Be(now + Timeframe); }
public void Test04_Переключение_на_первичный_адрес_через_заданный_интервал_происходит_корректно() { // arrange var now = new DateTime(2020, 02, 12); var time = new FixedTime(now); var switcher = new AddressSwitcher(PrimaryUrl, SecondaryUrl, Timeframe, time); // act var state = switcher.GetState(); state.Toggle(); // переключили на SecondaryUrl time.Shift(Timeframe + TimeSpan.FromSeconds(1)); state = switcher.GetState(); // assert state.Url.Should().BeEquivalentTo(PrimaryUrl); state.ValidUntil.Should().Be(DateTimeOffset.MaxValue); }
public static ImmutableState Secondary(AddressSwitcher switcher) => new ImmutableState(switcher, false, switcher._time.Now + switcher._timeframe);
public static ImmutableState Primary(AddressSwitcher switcher) => new ImmutableState(switcher, true, DateTimeOffset.MaxValue);