예제 #1
0
        public void Handle_Empty_Property_Values(string propertyName)
        {
            var fieldDefinition = new FieldDefinition {
                Key = "test"
            };

            fieldDefinition.Settings.Add(propertyName, "");
            var field = new NZazuField_With_Description_As_Content_Property(fieldDefinition, ServiceLocator);

            Assert.DoesNotThrow(() => field.ApplySettings(fieldDefinition));
        }
예제 #2
0
        public void Respect_generic_settings()
        {
            var definition = new FieldDefinition {
                Key = "test"
            };

            definition.Settings.Add("ContentStringFormat", "dddd – d - MMMM");
            definition.Settings.Add("FontFamily", "Century Gothic");
            definition.Settings.Add("FontWeight", "UltraBold");
            definition.Settings.Add("FontSize", "24");
            definition.Settings.Add("Foreground", "BlueViolet");
            definition.Settings.Add("Margin", "1,2,3,4");
            definition.Settings.Add("Name", "myControl");
            definition.Settings.Add("Opacity", "0.75");
            definition.Settings.Add("Padding", "2.5");
            definition.Settings.Add("TabIndex", "42");
            definition.Settings.Add("Uid", "myId");
            definition.Settings.Add("Visibility", "Collapsed");
            definition.Settings.Add("HorizontalAlignment", "Left");
            definition.Settings.Add("VerticalAlignment", "Bottom");

            var sut = new NZazuField_With_Description_As_Content_Property(definition, ServiceLocator);

            sut.ApplySettings(definition);
            var control = (ContentControl)sut.ValueControl;

            control.FontFamily.ToString().Should().Be("Century Gothic");
            control.FontWeight.Should().Be(FontWeights.UltraBold);
            control.FontSize.Should().Be(24);

            var brush = (SolidColorBrush)control.Foreground;

            brush.Color.Should().Be(Colors.BlueViolet);

            control.Margin.Should().Be(new Thickness(1, 2, 3, 4));
            control.Name.Should().Be("myControl");
            control.Opacity.Should().Be(0.75);
            control.Padding.Should().Be(new Thickness(2.5));
            control.ContentStringFormat.Should().Be("dddd – d - MMMM");
            control.TabIndex.Should().Be(42);
            control.Uid.Should().Be("myId");
            control.Visibility.Should().Be(Visibility.Collapsed);

            control.HorizontalAlignment.Should().Be(HorizontalAlignment.Left);
            control.VerticalAlignment.Should().Be(VerticalAlignment.Bottom);
        }
예제 #3
0
        public void Respect_Width_Setting()
        {
            const double expected   = 65.5;
            var          definition = new FieldDefinition {
                Key = "key"
            };

            definition.Settings.Add("Width", expected.ToString(CultureInfo.InvariantCulture));

            var field = new NZazuField_With_Description_As_Content_Property(definition, ServiceLocator);

            field.ApplySettings(definition);

            var control = (ContentControl)field.ValueControl;

            control.MinWidth.Should().Be(expected);
            control.MaxWidth.Should().Be(expected);
        }
예제 #4
0
        public void Attach_FieldValidationRule_according_to_checks()
        {
            // but we need a dummy content enabled field -> no content, no validation
            var check = Substitute.For <IValueCheck>();

            check.Validate(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <CultureInfo>())
            .Returns(new ValueCheckResult(false, new Exception("test")));

            var sut = new NZazuField_With_Description_As_Content_Property(
                new FieldDefinition {
                Key = "test", Description = "description"
            }, ServiceLocator)
            {
                Check = check
            };

            var expectedRule = new CheckValidationRule(check)
            {
                // we make sure the validation is executed on init
                ValidatesOnTargetUpdated = true
            };

            sut.ValueControl.Should().NotBeNull();

            var expression = sut.ValueControl.GetBindingExpression(sut.ContentProperty);

            expression.Should().NotBeNull();

            // ReSharper disable once PossibleNullReferenceException
            var binding = expression.ParentBinding;

            binding.Should().NotBeNull();
            binding.Source.Should().Be(sut, "we need a source for data binding");
            binding.Mode.Should().Be(BindingMode.TwoWay, "we update data binding in two directions");
            binding.UpdateSourceTrigger
            .Should().Be(UpdateSourceTrigger.PropertyChanged, "we want validation during edit");

            binding.ValidationRules.Single().Should().BeEquivalentTo(expectedRule);
        }