public string MakeReadable(IConversionExpressionWithValue expression)
        {
            IList <decimal> conversionFactors = new List <decimal>
            {
                ConversionFactors.ImperialTonToPound,
                ConversionFactors.HundredWeightToPound,
                ConversionFactors.StoneToPound,
                ConversionFactors.MultiplicationByOne,
                ConversionFactors.OunceToPound,
                ConversionFactors.DrachmToPound,
                ConversionFactors.GrainToPound
            };
            IList <string> abbreviations = new List <string>
            {
                UnitAbbreviations.ImperialTon,
                UnitAbbreviations.HundredWeight,
                UnitAbbreviations.Stone,
                UnitAbbreviations.Pound,
                UnitAbbreviations.Ounce,
                UnitAbbreviations.Drachm,
                UnitAbbreviations.Grain
            };

            return(CreateFrom(expression.Value, UnitAbbreviations.Pound, conversionFactors, abbreviations));
        }
Beispiel #2
0
        public string MakeReadable(IConversionExpressionWithValue expression)
        {
            IList <decimal> conversionFactors = new List <decimal>
            {
                ConversionFactors.FathomToFeet,
                ConversionFactors.LeagueToFeet,
                ConversionFactors.MileToFeet,
                ConversionFactors.FurlongToFeet,
                ConversionFactors.ChainToFeet,
                ConversionFactors.YardToFeet,
                ConversionFactors.MultiplicationByOne,
                ConversionFactors.InchToFeet,
                ConversionFactors.ThouToFeet
            };
            IList <string> abbreviations = new List <string>
            {
                UnitAbbreviations.Fathom,
                UnitAbbreviations.League,
                UnitAbbreviations.Mile,
                UnitAbbreviations.Furlong,
                UnitAbbreviations.Chain,
                UnitAbbreviations.Yard,
                UnitAbbreviations.Foot,
                UnitAbbreviations.Inch,
                UnitAbbreviations.Though
            };

            return(CreateFrom(expression.Value, UnitAbbreviations.Foot, conversionFactors, abbreviations));
        }
Beispiel #3
0
 static string CreateUnitIfImperial(IConversionExpressionWithValue expression)
 {
     if (expression is ImperialLengthExpression)
     {
         var readabilityCreator = new ImperialLengthReadabilityCreator();
         return(readabilityCreator.MakeReadable(expression));
     }
     if (expression is ImperialAreaExpression)
     {
         var readabilityCreator =
             new ImperialAreaReadabilityCreator();
         return(readabilityCreator.MakeReadable(expression));
     }
     if (expression is ImperialVolumeExpression)
     {
         var readabilityCreator = new ImperialVolumeReadabilityCreator();
         return(readabilityCreator.MakeReadable(expression));
     }
     if (expression is ImperialMassExpression)
     {
         var readabilityCreator = new ImperialMassReadabilityCreator();
         return(readabilityCreator.MakeReadable(expression));
     }
     throw new InvalidExpressionException();
 }
Beispiel #4
0
        public string MakeReadable(IConversionExpressionWithValue expression)
        {
            var result = CreateUnitIfMetric(expression);

            if (result != null)
            {
                return(result);
            }
            result = CreateUnitIfImperial(expression);
            return(result);
        }
        public string MakeReadable(IConversionExpressionWithValue expression)
        {
            IList <decimal> conversionFactors = new List <decimal>
            {
                ConversionFactors.AcreToSquareFoot,
                ConversionFactors.RoodToSquareFoot,
                ConversionFactors.PerchToSquareFoot,
                ConversionFactors.MultiplicationByOne
            };
            IList <string> abbreviations = new List <string>
            {
                UnitAbbreviations.Acre,
                UnitAbbreviations.Rood,
                UnitAbbreviations.Perch,
                UnitAbbreviations.Squarefoot
            };

            return(CreateFrom(expression.Value, UnitAbbreviations.Squarefoot, conversionFactors, abbreviations));
        }
        public string MakeReadable(IConversionExpressionWithValue expression)
        {
            IList <decimal> conversionFactors = new List <decimal>
            {
                ConversionFactors.GallonToFluidOunce,
                ConversionFactors.QuartToFluidOunce,
                ConversionFactors.PintToFluidOunce,
                ConversionFactors.GillToFluidOunce,
                ConversionFactors.MultiplicationByOne
            };
            IList <string> abbreviations = new List <string>
            {
                UnitAbbreviations.Gallon,
                UnitAbbreviations.Quart,
                UnitAbbreviations.Pint,
                UnitAbbreviations.Gill,
                UnitAbbreviations.FluidOunce
            };

            return(CreateFrom(expression.Value, UnitAbbreviations.FluidOunce, conversionFactors, abbreviations));
        }
 void Calculate(IArithmeticConversionOperation operation)
 {
     if (operation.Left.GetType() != operation.Right.GetType())
     {
         CreateReplacement(operation);
     }
     else
     {
         CreateReplacementIfBothSidesOfTheOperationNeedToBeConvertedForMetric(operation);
         CreateReplacementIfBothSidesOfTheOperationNeedToBeConvertedForImperial(operation);
         CalculateIfNoConversionIsNeeded(operation);
     }
     if (operation.HasParent)
     {
         operation.Parent.ReplaceChild(operation, mReplacement);
     }
     else
     {
         mResult = (IConversionExpressionWithValue)mReplacement;
     }
 }
Beispiel #8
0
 string CreateUnitIfMetric(IConversionExpressionWithValue expression)
 {
     if (expression is MetricLengthExpression)
     {
         if (expression.Value <= (decimal)0.01)
         {
             expression.Value /= ConversionFactors.MetricDivisionOneThousand;
             Unit              = UnitAbbreviations.Millimeters;
         }
         else if (expression.Value <= (decimal)0.1)
         {
             expression.Value /= ConversionFactors.MetricDivisionOneHundred;
             Unit              = UnitAbbreviations.Centimeters;
         }
         else if (expression.Value > 999)
         {
             expression.Value /= ConversionFactors.MetricMultiplicationOneThousand;
             Unit              = UnitAbbreviations.Kilometers;
         }
         else
         {
             Unit = UnitAbbreviations.Meters;
         }
     }
     else if (expression is MetricAreaExpression)
     {
         if (expression.Value <= (decimal)1E-5)
         {
             expression.Value /= ConversionFactors.MetricDivisionOneMillion;
             Unit              = UnitAbbreviations.Squaremillimeters;
         }
         else if (expression.Value <= (decimal)1E-3)
         {
             expression.Value /= ConversionFactors.MetricDivisionTenThousand;
             Unit              = UnitAbbreviations.Squarecentimeters;
         }
         else if (expression.Value >= (decimal)1E5)
         {
             expression.Value /= ConversionFactors.MetricMultiplicationOneMillion;
             Unit              = UnitAbbreviations.Squarekilometers;
         }
         else if (expression.Value >= (decimal)1E3)
         {
             expression.Value /= ConversionFactors.MetricMultiplicationMeterToha;
             Unit              = UnitAbbreviations.Hectas;
         }
         else
         {
             Unit = UnitAbbreviations.Sqauremeters;
         }
     }
     else if (expression is MetricVolumeExpression)
     {
         if (expression.Value <= (decimal)0.01)
         {
             expression.Value /= ConversionFactors.MetricDivisionOneThousand;
             Unit              = UnitAbbreviations.Milliliters;
         }
         else if (expression.Value <= (decimal)0.1)
         {
             expression.Value /= ConversionFactors.MetricDivisionOneHundred;
             Unit              = UnitAbbreviations.Centiliters;
         }
         else if (expression.Value >= 100)
         {
             expression.Value /= ConversionFactors.MetricMultiplicationOneHundred;
             Unit              = UnitAbbreviations.Hectoliters;
         }
         else
         {
             Unit = UnitAbbreviations.Liters;
         }
     }
     else if (expression is MetricMassExpression)
     {
         if (expression.Value <= (decimal)0.01)
         {
             expression.Value /= ConversionFactors.MetricDivisionOneThousand;
             Unit              = UnitAbbreviations.Milligram;
         }
         else if (expression.Value >= 999999)
         {
             expression.Value /= ConversionFactors.MetricMultiplicationOneMillion;
             Unit              = UnitAbbreviations.Ton;
         }
         else if (expression.Value >= 999)
         {
             expression.Value /= ConversionFactors.MetricMultiplicationOneThousand;
             Unit              = UnitAbbreviations.Kilogram;
         }
         else
         {
             Unit = UnitAbbreviations.Gram;
         }
     }
     if (Unit != null)
     {
         return($"{expression.Value} {Unit}");
     }
     return(null);
 }
 public void ReadableOutput(IConversionExpressionWithValue input, string expectedOutput)
 {
     mUnderTest.MakeReadable(input).Should().Be(expectedOutput);
 }