public void ensureFromEntityWithUnitConvertsContinuousDimensionInterval()
        {
            double minValue  = 20;
            double maxValue  = 60;
            double increment = 2;

            Dimension continuousDimensionInterval = new ContinuousDimensionInterval(minValue, maxValue, increment);

            string unit = "dm";

            GetDimensionModelView getDimensionModelView = DimensionModelViewService.fromEntity(continuousDimensionInterval, unit);

            GetContinuousDimensionIntervalModelView result = (GetContinuousDimensionIntervalModelView)getDimensionModelView;

            GetContinuousDimensionIntervalModelView expected = new GetContinuousDimensionIntervalModelView();

            expected.minValue  = MeasurementUnitService.convertToUnit(minValue, unit);
            expected.maxValue  = MeasurementUnitService.convertToUnit(maxValue, unit);
            expected.increment = MeasurementUnitService.convertToUnit(increment, unit);
            expected.unit      = unit;

            Assert.Equal(expected.minValue, result.minValue);
            Assert.Equal(expected.maxValue, result.maxValue);
            Assert.Equal(expected.increment, result.increment);
            Assert.Equal(expected.unit, result.unit);
        }
        public void ensureFromCollectionWithEmptyUnitUsesMinimumUnit()
        {
            double    minValue  = 20;
            double    maxValue  = 60;
            double    increment = 2;
            Dimension continuousDimensionInterval = new ContinuousDimensionInterval(minValue, maxValue, increment);

            List <double> values = new List <double>()
            {
                21, 35, 42
            };
            Dimension discreteDimensionInterval = new DiscreteDimensionInterval(values);

            double    value = 72;
            Dimension singleValueDimension = new SingleValueDimension(value);

            IEnumerable <Dimension> dimensions = new List <Dimension>()
            {
                continuousDimensionInterval, discreteDimensionInterval, singleValueDimension
            };

            GetAllDimensionsModelView getAllDimensionsModelView = DimensionModelViewService.fromCollection(dimensions, "");

            string minimumUnit = MeasurementUnitService.getMinimumUnit();

            GetContinuousDimensionIntervalModelView continuousDimensionIntervalModelView = new GetContinuousDimensionIntervalModelView();

            continuousDimensionIntervalModelView.minValue  = minValue;
            continuousDimensionIntervalModelView.maxValue  = maxValue;
            continuousDimensionIntervalModelView.increment = increment;
            continuousDimensionIntervalModelView.unit      = minimumUnit;


            GetDiscreteDimensionIntervalModelView discreteDimensionIntervalModelView = new GetDiscreteDimensionIntervalModelView();

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


            GetSingleValueDimensionModelView singleValueDimensionModelView = new GetSingleValueDimensionModelView();

            singleValueDimensionModelView.value = value;
            singleValueDimensionModelView.unit  = minimumUnit;

            GetAllDimensionsModelView expected = new GetAllDimensionsModelView()
            {
                continuousDimensionIntervalModelView, discreteDimensionIntervalModelView, singleValueDimensionModelView
            };

            for (int i = 0; i < 3; i++)
            {
                Assert.True(equalModelViews(getAllDimensionsModelView[i], expected[i]));
            }
        }
        private bool equalModelViews(GetDimensionModelView oneDimensionModelView, GetDimensionModelView otherDimensionModelView)
        {
            if (oneDimensionModelView == otherDimensionModelView)
            {
                return(true);
            }

            if (oneDimensionModelView == null || otherDimensionModelView == null || oneDimensionModelView.GetType() != otherDimensionModelView.GetType())
            {
                return(false);
            }

            if (oneDimensionModelView.GetType() == typeof(GetContinuousDimensionIntervalModelView))
            {
                GetContinuousDimensionIntervalModelView oneContinuousMV   = (GetContinuousDimensionIntervalModelView)oneDimensionModelView;
                GetContinuousDimensionIntervalModelView otherContinuousMV = (GetContinuousDimensionIntervalModelView)otherDimensionModelView;


                return(oneContinuousMV.minValue.Equals(otherContinuousMV.minValue) &&
                       oneContinuousMV.maxValue.Equals(otherContinuousMV.maxValue) &&
                       oneContinuousMV.increment.Equals(otherContinuousMV.increment) &&
                       oneContinuousMV.unit.Equals(otherContinuousMV.unit));
            }

            else if (oneDimensionModelView.GetType() == typeof(GetDiscreteDimensionIntervalModelView))
            {
                GetDiscreteDimensionIntervalModelView oneDiscreteMV   = (GetDiscreteDimensionIntervalModelView)oneDimensionModelView;
                GetDiscreteDimensionIntervalModelView otherDiscreteMV = (GetDiscreteDimensionIntervalModelView)otherDimensionModelView;

                var firstNotSecond = oneDiscreteMV.values.Except(otherDiscreteMV.values).ToList();
                var secondNotFirst = otherDiscreteMV.values.Except(oneDiscreteMV.values).ToList();

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

                return(equalLists && oneDiscreteMV.unit.Equals(otherDiscreteMV.unit));
            }

            else if (oneDimensionModelView.GetType() == typeof(GetSingleValueDimensionModelView))
            {
                GetSingleValueDimensionModelView oneSingleValueMV   = (GetSingleValueDimensionModelView)oneDimensionModelView;
                GetSingleValueDimensionModelView otherSingleValueMV = (GetSingleValueDimensionModelView)otherDimensionModelView;

                return(oneSingleValueMV.value.Equals(otherSingleValueMV.value) && oneSingleValueMV.unit.Equals(otherSingleValueMV.unit));
            }
            else
            {
                return(false);
            }
        }
        public void ensureFromEntityConvertsContinuousDimensionInterval()
        {
            double minValue  = 20;
            double maxValue  = 60;
            double increment = 2;

            Dimension continuousDimensionInterval = new ContinuousDimensionInterval(minValue, maxValue, increment);

            GetDimensionModelView getDimensionModelView = DimensionModelViewService.fromEntity(continuousDimensionInterval);

            GetContinuousDimensionIntervalModelView result = (GetContinuousDimensionIntervalModelView)getDimensionModelView;

            GetContinuousDimensionIntervalModelView expected = new GetContinuousDimensionIntervalModelView();

            expected.minValue  = minValue;
            expected.maxValue  = maxValue;
            expected.increment = increment;
            expected.unit      = MeasurementUnitService.getMinimumUnit();

            Assert.Equal(expected.minValue, result.minValue);
            Assert.Equal(expected.maxValue, result.maxValue);
            Assert.Equal(expected.increment, result.increment);
            Assert.Equal(expected.unit, result.unit);
        }