public void ensureFromModelViewCreatesContinuousDimensionIntervalWithExpectedData()
        {
            double minValue  = 20;
            double maxValue  = 120;
            double increment = 5;

            string unit = "m";

            AddContinuousDimensionIntervalModelView continuousDimensionIntervalModelView = new AddContinuousDimensionIntervalModelView()
            {
                minValue  = minValue,
                maxValue  = maxValue,
                increment = increment,
                unit      = unit
            };


            ContinuousDimensionInterval continuousDimensionInterval = (ContinuousDimensionInterval)DimensionModelViewService.fromModelView(continuousDimensionIntervalModelView);

            double expectedMinValue  = MeasurementUnitService.convertFromUnit(minValue, unit);
            double expectedMaxvalue  = MeasurementUnitService.convertFromUnit(maxValue, unit);
            double expectedIncrement = MeasurementUnitService.convertFromUnit(increment, unit);


            Assert.Equal(expectedMinValue, continuousDimensionInterval.minValue);
            Assert.Equal(expectedMaxvalue, continuousDimensionInterval.maxValue);
            Assert.Equal(expectedIncrement, continuousDimensionInterval.increment);
        }
        public void ensureFromModelViewCreatesContinuousDimensionInterval()
        {
            AddContinuousDimensionIntervalModelView continuousDimensionIntervalModelView = new AddContinuousDimensionIntervalModelView();

            continuousDimensionIntervalModelView.minValue  = 25;
            continuousDimensionIntervalModelView.maxValue  = 45;
            continuousDimensionIntervalModelView.increment = 5;

            Dimension dimension = DimensionModelViewService.fromModelView(continuousDimensionIntervalModelView);

            Type continuousDimensionIntervalType = typeof(ContinuousDimensionInterval);

            Assert.Equal(continuousDimensionIntervalType, dimension.GetType());
        }
        private bool modelViewEqualsDimension(AddDimensionModelView modelView, Dimension dimension)
        {
            if (modelView.GetType() == typeof(AddDiscreteDimensionIntervalModelView) && dimension.GetType() == typeof(DiscreteDimensionInterval))
            {
                DiscreteDimensionInterval             discreteDimension = (DiscreteDimensionInterval)dimension;
                AddDiscreteDimensionIntervalModelView discreteModelView = (AddDiscreteDimensionIntervalModelView)modelView;

                List <double> expectedValues = new List <double>();

                foreach (double modelViewValue in discreteModelView.values)
                {
                    double expectedValue = MeasurementUnitService.convertFromUnit(modelViewValue, discreteModelView.unit);
                    expectedValues.Add(expectedValue);
                }

                var firstNotSecond = expectedValues.Except(discreteDimension.values.Select(dv => dv.value)).ToList();
                var secondNotFirst = discreteDimension.values.Select(dv => dv.value).Except(expectedValues).ToList();

                bool equalLists = !firstNotSecond.Any() && !secondNotFirst.Any();

                return(equalLists);
            }
            else if (modelView.GetType() == typeof(AddSingleValueDimensionModelView) && dimension.GetType() == typeof(SingleValueDimension))
            {
                SingleValueDimension             singleValueDimension = (SingleValueDimension)dimension;
                AddSingleValueDimensionModelView singleValueModelView = (AddSingleValueDimensionModelView)modelView;

                double expectedValue = MeasurementUnitService.convertFromUnit(singleValueModelView.value, singleValueModelView.unit);

                return(expectedValue.Equals(singleValueDimension.value));
            }
            else if (modelView.GetType() == typeof(AddContinuousDimensionIntervalModelView) && dimension.GetType() == typeof(ContinuousDimensionInterval))
            {
                ContinuousDimensionInterval             continuousDimension = (ContinuousDimensionInterval)dimension;
                AddContinuousDimensionIntervalModelView continuousModelView = (AddContinuousDimensionIntervalModelView)modelView;

                double expectedMinValue  = MeasurementUnitService.convertFromUnit(continuousModelView.minValue, continuousModelView.unit);
                double expectedMaxValue  = MeasurementUnitService.convertFromUnit(continuousModelView.maxValue, continuousModelView.unit);
                double expectedIncrement = MeasurementUnitService.convertFromUnit(continuousModelView.increment, continuousModelView.unit);

                return(expectedMinValue.Equals(continuousDimension.minValue) &&
                       expectedMaxValue.Equals(continuousDimension.maxValue) &&
                       expectedIncrement.Equals(continuousDimension.increment));
            }
            else
            {
                return(false);
            }
        }
        public void ensureFromModelViewsCreatesEnumerableOfDimensionWithExpectedData()
        {
            string unit = "m";

            double minValue  = 20;
            double maxValue  = 120;
            double increment = 5;

            AddContinuousDimensionIntervalModelView continuousDimensionIntervalModelView = new AddContinuousDimensionIntervalModelView()
            {
                minValue  = minValue,
                maxValue  = maxValue,
                increment = increment,
                unit      = unit
            };


            List <double> values = new List <double>()
            {
                12, 31, 45, 67
            };

            AddDiscreteDimensionIntervalModelView discreteDimensionIntervalModelView = new AddDiscreteDimensionIntervalModelView();

            discreteDimensionIntervalModelView.values = values;
            discreteDimensionIntervalModelView.unit   = unit;


            IEnumerable <AddDimensionModelView> modelViews = new List <AddDimensionModelView>()
            {
                continuousDimensionIntervalModelView, discreteDimensionIntervalModelView
            };

            IEnumerable <Dimension> dimensions = DimensionModelViewService.fromModelViews(modelViews);

            Assert.Equal(modelViews.Count(), dimensions.Count());

            var modelViewEnumerator = modelViews.GetEnumerator();
            var dimensionEnumerator = dimensions.GetEnumerator();

            for (int i = 0; i < modelViews.Count(); i++)
            {
                modelViewEnumerator.MoveNext();
                dimensionEnumerator.MoveNext();

                Assert.True(modelViewEqualsDimension(modelViewEnumerator.Current, dimensionEnumerator.Current));
            }
        }
        public void ensureFromModelViewsThrowsExceptionIfElementIsNull()
        {
            string unit = "m";

            double minValue  = 20;
            double maxValue  = 120;
            double increment = 5;

            AddContinuousDimensionIntervalModelView continuousDimensionIntervalModelView = new AddContinuousDimensionIntervalModelView()
            {
                minValue  = minValue,
                maxValue  = maxValue,
                increment = increment,
                unit      = unit
            };


            List <double> values = new List <double>()
            {
                12, 31, 45, 67
            };

            AddDiscreteDimensionIntervalModelView discreteDimensionIntervalModelView = new AddDiscreteDimensionIntervalModelView();

            discreteDimensionIntervalModelView.values = values;
            discreteDimensionIntervalModelView.unit   = unit;


            AddDimensionModelView nullModelView = null;

            IEnumerable <AddDimensionModelView> modelViews = new List <AddDimensionModelView>()
            {
                continuousDimensionIntervalModelView, discreteDimensionIntervalModelView, nullModelView
            };

            Action fromModelViews = () => DimensionModelViewService.fromModelViews(modelViews);

            Assert.Throws <ArgumentNullException>(fromModelViews);
        }