Пример #1
0
            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);
        }
Пример #5
0
 public static ImmutableState Secondary(AddressSwitcher switcher) =>
 new ImmutableState(switcher, false, switcher._time.Now + switcher._timeframe);
Пример #6
0
 public static ImmutableState Primary(AddressSwitcher switcher) =>
 new ImmutableState(switcher, true, DateTimeOffset.MaxValue);