public void DefaultTypeIsDouble()
        {
            var    gridUnitExtension = new GridUnitExtension(ValidDoubleMultiplier);
            object result            = gridUnitExtension.ProvideValue(MockedServiceProvider.Default);

            Assert.IsType <double>(result);
        }
        public void ThrowsForUnsetMultiplierString()
        {
            var       gridUnitExtension = new GridUnitExtension();
            Exception ex = Record.Exception(
                () => gridUnitExtension.ProvideValue(MockedServiceProvider.Default));

            Assert.IsType <InvalidOperationException>(ex);
        }
        public void ReadsTypeFromPropertyInfo()
        {
            var    gridUnitExtension = new GridUnitExtension(ValidThicknessMultiplier);
            var    serviceProvider   = MockedServiceProvider.CreateForTargetPropertyType <Thickness>();
            object result            = gridUnitExtension.ProvideValue(serviceProvider);

            Assert.IsType <Thickness>(result);
        }
        public void ThrowsForUnsupportedType()
        {
            var gridUnitExtension = new GridUnitExtension(
                ValidDoubleMultiplier, typeof(GridUnitExtensionTests));
            Exception ex = Record.Exception(
                () => gridUnitExtension.ProvideValue(MockedServiceProvider.Default));

            Assert.IsType <NotSupportedException>(ex);
        }
        public void SupportsTypes(string multiplierString, object expectedResult)
        {
            var gridUnitExtension = new GridUnitExtension(multiplierString, expectedResult.GetType())
            {
                GridCellSize = 4
            };

            object result = gridUnitExtension.ProvideValue(MockedServiceProvider.Default);

            Assert.IsType(expectedResult.GetType(), result);
            Assert.Equal(expectedResult, result);
        }
        public void UsesTargetTypeProperty()
        {
            // We pass in a property of type A,
            // but set the TargetType to type B.
            // Type B is the expected type of the result.
            var gridUnitExtension = new GridUnitExtension(
                ValidThicknessMultiplier, typeof(Thickness));
            var serviceProvider = MockedServiceProvider.CreateForTargetPropertyType <Point>();

            object result = gridUnitExtension.ProvideValue(serviceProvider);

            Assert.IsType <Thickness>(result);
        }
        public void ReadsTypeFromDependencyProperties()
        {
            var gridUnitExtension = new GridUnitExtension(ValidThicknessMultiplier);
            var depProp           = DependencyProperties.ThicknessProperty; // Use a random dep.prop.
            var serviceProvider   = new MockedServiceProvider()
            {
                TargetProperty = depProp
            };

            object result = gridUnitExtension.ProvideValue(serviceProvider);

            Assert.IsType(depProp.PropertyType, result);
        }
        public void GridCellSizeIsChangeable()
        {
            double cellSize          = 15;
            double input             = 10;
            double expectedOutput    = input * cellSize;
            var    gridUnitExtension = new GridUnitExtension(input.ToString())
            {
                GridCellSize = cellSize
            };

            double result = (double)gridUnitExtension.ProvideValue(MockedServiceProvider.Default);

            Assert.Equal(expectedOutput, result);
        }
        public void ReadsTypeFromSetters()
        {
            var gridUnitExtension = new GridUnitExtension(ValidPointMultiplier);
            var depProp           = DependencyProperties.PointProperty;
            var serviceProvider   = new MockedServiceProvider()
            {
                // Use a setter to a random dependency property.
                // What counts is that it has a supported type.
                TargetObject = new Setter(depProp, new Point(1, 1))
            };

            object result = gridUnitExtension.ProvideValue(serviceProvider);

            Assert.IsType(depProp.PropertyType, result);
        }
        public void UsesDipMultiplier()
        {
            double dipMultiplier     = DipHelper.GetDipMultiplier();
            double input             = 10;
            double expectedOutput    = input * dipMultiplier;
            var    gridUnitExtension = new GridUnitExtension(input.ToString())
            {
                MultiplyWithDip = true,
                GridCellSize    = 1     // This must be 1, otherwise the result will be multiplied
            };                          // by 4 (default).


            double result = (double)gridUnitExtension.ProvideValue(MockedServiceProvider.Default);

            Assert.Equal(expectedOutput, result);
        }