public void AddSubscribers()
        {
            var subject   = new RandomIntsForDays();
            var numberFan = new NumberFan();

            subject.AddSubscriber(numberFan);

            subject.Subscribers.Count.ShouldBe(1);
        }
        public void RemoveSubscriber()
        {
            var subject   = new RandomIntsForDays();
            var numberFan = new NumberFan();

            subject.AddSubscriber(numberFan);

            subject.RemoveSubscriber(numberFan);

            subject.Subscribers.ShouldBeEmpty();
        }
        public void NotifySubscribersMultipleTimes(int timesToUpdate)
        {
            var subject   = new RandomIntsForDays();
            var numberFan = Substitute.For <ISubscriber>();

            subject.AddSubscriber(numberFan);
            var expectedValues = new List <int>();

            for (var i = 0; i < timesToUpdate; i++)
            {
                subject.GenerateNumber();
                expectedValues.Add(subject.CurrentNumber);
            }

            numberFan.Received(timesToUpdate).Notify(Arg.Is <int>(x => expectedValues.Contains(x)));
        }