public void TwoOutOfThree()
        {
            var something =
                new SomethingToShrink
            {
                PropertyOne   = 42,
                PropertyTwo   = 42,
                PropertyThree = 42,
            };
            var composite =
                new ShrinkingStrategy()
                .Add(Simple.AllValues())
                .RegisterAll(something);

            composite.Shrink(() => something.PropertyOne == 42 && something.PropertyTwo == 42);

            Assert.False(composite.Shrunk());
            Assert.False(composite.Shrunk(something, e => e.PropertyOne));
            Assert.False(composite.Shrunk(something, e => e.PropertyTwo));
            Assert.True(composite.Shrunk(something, e => e.PropertyThree));
        }
        public void TwoOutOfThree()
        {
            var something =
                new SomethingToShrink
                    {
                        PropertyOne = 42,
                        PropertyTwo = 42,
                        PropertyThree = 42,
                    };
            var composite =
                new ShrinkingStrategy()
                    .Add(Simple.AllValues())
                    .RegisterAll(something);

            composite.Shrink(() => something.PropertyOne == 42 && something.PropertyTwo == 42);

            Assert.False(composite.Shrunk());
            Assert.False(composite.Shrunk(something, e => e.PropertyOne));
            Assert.False(composite.Shrunk(something, e => e.PropertyTwo));
            Assert.True(composite.Shrunk(something, e => e.PropertyThree));
        }