Example #1
0
        public void SetUp()
        {
            specification = MockRepository.GenerateMock <ISpecification <string> >();

            testAlbum = new Album("Depeche Mode", "Violator", 1991, "New Wave");
            sut       = new PropertySpecification <Album, string>(x => x.Artist, specification);
        }
Example #2
0
        public void AdvancedPropertyDescriptorConstructionTestWithFuncs()
        {
            PropertyBag bag = new PropertyBag();
            // add some property specifications.
            var property1 = new PropertySpecification("Property 1", typeof(string), "Cat1", "Prop1 desc", "Foo");

            // make readonly
            property1.Attributes.Add(ReadOnlyAttribute.Yes);
            bag.PropertySpecifications.Add(property1);

            // add expanding property
            var property2 = new PropertySpecification("Picture", typeof(Image), "Some Category", "This is a sample description.");

            property2.Attributes.Add(new TypeConverterAttribute(typeof(ExpandableObjectConverter)));
            bag.PropertySpecifications.Add(property2);

            // custom editor
            var property3 = new PropertySpecification("Source folder", typeof(string), "OutputFolders", "The output folder for the sourcecode", "c:\\temp");

            property3.Attributes.Add(new EditorAttribute(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor)));
            property3.ConvertEmptyStringToNull = true;
            bag.PropertySpecifications.Add(property3);

            // use value list
            var property4 = new PropertySpecification("PickAValue", typeof(string), "Cat1", "A property which value has to be picked from a list", "One");

            property4.TypeConverterType = typeof(PropertySpecificationValuesListTypeConverter);
            property4.ValueList.AddRange(new[] { "One", "Two", "Three", "Many" });
            bag.PropertySpecifications.Add(property4);

            var property5 = new PropertySpecification("EnumValue", typeof(ConsoleColor), "Cat1", "Enum property to see that values are converted back/forth to int");

            bag.PropertySpecifications.Add(property5);

            // value list to store values in
            Dictionary <string, object> values = new Dictionary <string, object>();

            // func setting so values get store inside the dictionary and also retrieved from it. Console write added to see what happens when you bind
            // a windows forms propertygrid to a bag: many many redundant calls to the getters/setters occur.
            bag.ValueGetterFunc = (s) =>
            {
                var v = values.GetValue(s);
                Console.WriteLine("Get: {0} : {1}", s, v ?? "<null>");
                return(v);
            };
            bag.ValueSetterFunc = (s, v) =>
            {
                values[s] = v;
                Console.WriteLine("Set: {0} : {1}", s, v ?? "<null>");
            };

            // open a testform which binds the bag to the propertygrid. Editing values will store the values in the dictionary, default values are
            // not in the dictionary.
            using (TestForm f = new TestForm(bag))
            {
                f.ShowDialog();
            }
        }
Example #3
0
        public void IsSatisfiedByWithNullRequestShouldThrowArgumentNullException()
        {
            // Arrange
            var sut = new PropertySpecification(typeof(object), "someName");

            // Act & assert
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.IsSatisfiedBy(null));
        }
Example #4
0
        public void SutIsRequestSpecification()
        {
            // Arrange
            // Act
            var sut = new PropertySpecification(typeof(object), "someName");

            // Assert
            Assert.IsAssignableFrom <IRequestSpecification>(sut);
        }
Example #5
0
        public void IsSatisfiedByWithInvalidRequestShouldReturnFalse(object request)
        {
            // Arrange
            var sut = new PropertySpecification(typeof(object), "someName");
            // Act
            var result = sut.IsSatisfiedBy(request);

            // Assert
            Assert.False(result);
        }
Example #6
0
        public void InvokeCompositeFalseProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, bool>(
                ft => ft.Inter.Third, new FalseSpecification());

            var sut = new MockCompositeSpecification <FakeType>().False(
                ft => ft.Inter.Third);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #7
0
        public void IsSatisfiedByWithNullRequestShouldThrowArgumentNullException()
        {
            // Fixture setup
            var sut = new PropertySpecification(typeof(object), "someName");

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.IsSatisfiedBy(null));
            // Teardown
        }
Example #8
0
        public void InvokeIsTypeProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, int>(
                ft => ft.First, new IsTypeSpecification <int>(typeof(FakeType)));

            var sut = Specification.IsType <FakeType, int>(
                ft => ft.First, typeof(FakeType));

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeMaxLengthProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new MaxLengthSpecification <string>(0, true));

            var sut = Specification.MaxLength <FakeType, string>(
                ft => ft.Second, 0);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeStringContainsProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new ContainsSpecification(" "));

            var sut = Specification.Contains <FakeType>(
                ft => ft.Second, " ");

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeCompositeNullProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new NullSpecification <string>());

            var sut = new MockCompositeSpecification <FakeType>().Null(
                ft => ft.Second);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #12
0
        public void InvokeCreditCardProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification<FakeType, string>(
                ft => ft.Second, new CreditCardSpecification());

            var sut = Specification.CreditCard<FakeType>(
                ft => ft.Second);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #13
0
        public void SutIsRequestSpecification()
        {
            // Fixture setup
            // Exercise system
            var sut = new PropertySpecification(typeof(object), "someName");

            // Verify outcome
            Assert.IsAssignableFrom <IRequestSpecification>(sut);
            // Teardown
        }
Example #14
0
        public void InvokeExpressionProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, int>(
                ft => ft.First, new ExpressionSpecification <int>(ft => true));

            var sut = Specification.Expression <FakeType, int>(
                ft => ft.First, ft => true);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
            public void TrueSpecification_ReturnTrue <T>(FakeType candidate, Expression <Func <FakeType, T> > selector)
            {
                var specification = MockSpecification <T> .True();

                var sut = new PropertySpecification <FakeType, T>(selector, specification);

                var result = sut.IsSatisfiedBy(candidate);

                Assert.True(result);
            }
Example #16
0
        public void InvokeTrueProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, bool>(
                ft => ft.Inter.Third, new TrueSpecification());

            var sut = Specification.True <FakeType>(
                ft => ft.Inter.Third);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #17
0
        public void InvokeMatchProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new MatchSpecification("pattern", RegexOptions.IgnoreCase));

            var sut = Specification.Match <FakeType>(
                ft => ft.Second, "pattern", RegexOptions.IgnoreCase);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #18
0
        public void InvokeCompositeMinLengthProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new MinLengthSpecification <string>(0, true));

            var sut = new MockCompositeSpecification <FakeType>().MinLength(
                ft => ft.Second, 0);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #19
0
        public void InvokeCompositeForProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(ft => ft.Second,
                                                                        MockComplexSpecification <string> .True());

            var sut = new MockCompositeSpecification <FakeType>().ForProperty(
                ft => ft.Second, MockComplexSpecification <string> .True());

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeEmptyProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new EmptySpecification <string>(true));

            var sut = Specification.Empty <FakeType, string>(
                ft => ft.Second);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #21
0
        public void InvokeContainsProperty_ReturnPropertySpecification()
        {
            var comparer = new FakeIntComparer();
            var expected = new PropertySpecification <FakeType, IEnumerable <int> >(
                ft => ft.Fourth, new ContainsSpecification <IEnumerable <int>, int>(0, comparer, true));

            var sut = Specification.Contains <FakeType, int>(
                ft => ft.Fourth, 0, comparer);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
            public void FalseSpecification_ReturnFalse <T>(FakeType candidate, Expression <Func <FakeType, T> > selector)
            {
                candidate = candidate.Second != "null" ? candidate : null;
                var specification = MockSpecification <T> .False();

                var sut = new PropertySpecification <FakeType, T>(selector, specification);

                var result = sut.IsSatisfiedBy(candidate);

                Assert.False(result);
            }
            public void InvokeTrueSpecification_ReturnTrue <T>(FakeType candidate,
                                                               Expression <Func <FakeType, T> > selector)
            {
                var specification = MockSpecification <T> .True();

                var sut = new PropertySpecification <FakeType, T>(selector, specification);

                var result = sut.GetExpression().Compile().Invoke(candidate);

                Assert.True(result);
            }
        public void InvokeEqualProperty_ReturnPropertySpecification()
        {
            var comparer = new FakeIntComparer();
            var expected = new PropertySpecification <FakeType, int>(
                ft => ft.First, new EqualSpecification <int>(0, comparer));

            var sut = Specification.Equal <FakeType, int>(
                ft => ft.First, 0, comparer);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeCompositeInclusiveBetweenProperty_ReturnPropertySpecification()
        {
            var comparer = new FakeIntComparer();
            var expected = new PropertySpecification <FakeType, int>(
                ft => ft.First, new InclusiveBetweenSpecification <int>(0, 0, comparer));

            var sut = new MockCompositeSpecification <FakeType>().InclusiveBetween(
                ft => ft.First, 0, 0, comparer);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #26
0
        public void IsSatisfiedByWithInvalidRequestShouldReturnFalse(object request)
        {
            // Fixture setup
            var sut = new PropertySpecification(typeof(object), "someName");
            // Exercise system
            var result = sut.IsSatisfiedBy(request);

            // Verify outcome
            Assert.False(result);
            // Teardown
        }
Example #27
0
        public void InvokeNotLengthBetweenProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new NotSpecification <string>(
                    new LengthBetweenSpecification <string>(0, 0, true)));

            var sut = Specification.NotLengthBetween <FakeType, string>(
                ft => ft.Second, 0, 0);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeCompositeLessThanOrEqualProperty_ReturnPropertySpecification()
        {
            var comparer = new FakeIntComparer();
            var expected = new PropertySpecification <FakeType, int>(
                ft => ft.First, new LessThanOrEqualSpecification <int>(0, comparer));

            var sut = new MockCompositeSpecification <FakeType>().LessThanOrEqual(
                ft => ft.First, 0, comparer);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
Example #29
0
        public void InvokeNotEmailProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new NotSpecification <string>(
                    new EmailSpecification()));

            var sut = Specification.NotEmail <FakeType>(
                ft => ft.Second);

            Assert.Equal(expected, sut, new SpecificationComparer());
        }
        public void InvokeCompositeStringNotContainsProperty_ReturnPropertySpecification()
        {
            var expected = new PropertySpecification <FakeType, string>(
                ft => ft.Second, new NotSpecification <string>(
                    new ContainsSpecification(" ")));

            var sut = new MockCompositeSpecification <FakeType>().NotContains(
                ft => ft.Second, " ");

            Assert.Equal(expected, sut, new SpecificationComparer());
        }