public void ValueShouldBeResettedWhenChangingAvailableValues()
        {
            // Arrange
            var sut = new TestListOption(3);

            // Act
            sut.SetAvailableValuesFilter(x => x.Take(1));

            // Assert
            var actual = sut.Value;

            Assert.Equal(1, actual);
        }
        public void RaiseAvailableValuesChangedShouldRaiseEvent()
        {
            // Arrange
            var sut = new TestListOption(0);

            // Act
            var evt = Assert.RaisesAny <EventArgs>(
                e => sut.AvailableValuesChanged += e,
                e => sut.AvailableValuesChanged -= e,
                () => sut.FireAvailableValuesChangedEvent());

            // Assert
            Assert.NotNull(evt);
            Assert.Same(sut, evt.Sender);
            Assert.Equal(EventArgs.Empty, evt.Arguments);
        }
        public void SettingValueShouldOnlyAcceptValuesListedAsAvailable(int value, bool accept)
        {
            // Arrange
            var sut = new TestListOption(0);

            // Act
            sut.Value = value;

            // Assert
            if (accept)
            {
                Assert.Equal(value, sut.Value);
            }
            else
            {
                Assert.NotEqual(value, sut.Value);
            }
        }