Пример #1
0
        private string GetThousandsWord(ExpandedDigits expandedDigits)
        {
            if (expandedDigits.Thousands == 0 || expandedDigits.CanCompressFourDigitNumberIntoThreeDigitNotation())
            {
                return(NumberNotFound);
            }

            return(GetUnitsWord(expandedDigits.Thousands) + " thousand ");
        }
Пример #2
0
        private string GetGatedUnitWord(ExpandedDigits digits)
        {
            if (digits.IsTeenNumber() || MultiDigitNumberEndingWithZero(digits))
            {
                return(NumberNotFound);
            }

            return(GetUnitsWord(digits.Units));
        }
Пример #3
0
        public void IsSingleDigitNumber_When0Through9_ShouldReturnTrue(int units)
        {
            //---------------Arrange-------------------
            var sut = new ExpandedDigits
            {
                Units = units
            };
            //---------------Act----------------------
            var actual = sut.IsSingleDigitNumber();

            //---------------Assert-----------------------
            actual.Should().BeTrue();
        }
Пример #4
0
        public void IsTeenNumber_WhenIs20_ShouldReturnFalse()
        {
            //---------------Arrange-------------------
            var sut = new ExpandedDigits
            {
                Tens  = 2,
                Units = 0
            };
            //---------------Act----------------------
            var actual = sut.IsTeenNumber();

            //---------------Assert-----------------------
            actual.Should().BeFalse();
        }
Пример #5
0
        public void IsTeenNumber_WhenIs11Through19_ShouldReturnTrue(int tens, int units)
        {
            //---------------Arrange-------------------
            var sut = new ExpandedDigits
            {
                Tens  = tens,
                Units = units
            };
            //---------------Act----------------------
            var actual = sut.IsTeenNumber();

            //---------------Assert-----------------------
            actual.Should().BeTrue();
        }
Пример #6
0
        private string GetTensWord(ExpandedDigits digits)
        {
            if (digits.Tens == 0)
            {
                return(NumberNotFound);
            }

            if (digits.IsTeenNumber())
            {
                return(GetTeenNumberWord(digits));
            }

            return(GetTensDigitWord(digits));
        }
Пример #7
0
        public void IsCompoundNumber_WhenIs_ShouldReturnTrue(int units, int tens, int hundreds)
        {
            //---------------Arrange-------------------
            var sut = new ExpandedDigits
            {
                Hundreds = hundreds,
                Tens     = tens,
                Units    = units
            };
            //---------------Act----------------------
            var actual = sut.IsCompoundNumber();

            //---------------Assert-----------------------
            actual.Should().BeTrue();
        }
Пример #8
0
        public void Expand_WhenSingleDigitNumber_ShouldReturnUnitsPopulated()
        {
            //---------------Arrange-------------------
            var input = 5;
            var sut   = CreateDigitExpandor();
            //---------------Act----------------------
            var actual = sut.Expand(input);
            //---------------Assert-----------------------
            var expected = new ExpandedDigits
            {
                Units = 5
            };

            actual.Should().BeEquivalentTo(expected);
        }
Пример #9
0
        public void CanCompressFourDigitNumberIntoThreeDigitNotation_WhenNotPossible_ShouldReturnFalse()
        {
            //---------------Arrange-------------------
            var sut = new ExpandedDigits
            {
                Thousands = 0,
                Hundreds  = 3,
                Tens      = 0,
                Units     = 0
            };
            //---------------Act----------------------
            var actual = sut.CanCompressFourDigitNumberIntoThreeDigitNotation();

            //---------------Assert-----------------------
            actual.Should().BeFalse();
        }
Пример #10
0
        public void Expand_WhenTrippleDigitNumber_ShouldReturnHundredsAndTensAndUnitsPopulated()
        {
            //---------------Arrange-------------------
            var input = 270;
            var sut   = CreateDigitExpandor();
            //---------------Act----------------------
            var actual = sut.Expand(input);
            //---------------Assert-----------------------
            var expected = new ExpandedDigits
            {
                Units    = 0,
                Tens     = 7,
                Hundreds = 2
            };

            actual.Should().BeEquivalentTo(expected);
        }
Пример #11
0
        public void Expand_WhenFourDigitNumber_ShouldReturnThousandsAndHundredsAndTensAndUnitsPopulated()
        {
            //---------------Arrange-------------------
            var input = 5023;
            var sut   = CreateDigitExpandor();
            //---------------Act----------------------
            var actual = sut.Expand(input);
            //---------------Assert-----------------------
            var expected = new ExpandedDigits
            {
                Units     = 3,
                Tens      = 2,
                Hundreds  = 0,
                Thousands = 5
            };

            actual.Should().BeEquivalentTo(expected);
        }
Пример #12
0
        private string GetHundredsWord(ExpandedDigits expandedDigits)
        {
            if (expandedDigits.Hundreds == 0)
            {
                return(NumberNotFound);
            }

            if (expandedDigits.CanCompressFourDigitNumberIntoThreeDigitNotation())
            {
                var compressedDigits = new ExpandedDigits {
                    Tens = expandedDigits.Thousands, Units = expandedDigits.Hundreds
                };
                var compressionResult = GetTensWord(compressedDigits) + GetUnitsWord(compressedDigits.Units);
                return(compressionResult + " hundred");
            }

            return(GetUnitsWord(expandedDigits.Hundreds) + " hundred ");
        }
Пример #13
0
        private string GetTeenNumberWord(ExpandedDigits digits)
        {
            var teens = new Dictionary <int, string>
            {
                { 11, "eleven" },
                { 12, "twelve" },
                { 13, "thirteen" },
                { 14, "fourteen" },
                { 15, "fifteen" },
                { 16, "sixteen" },
                { 17, "seventeen" },
                { 18, "eighteen" },
                { 19, "nineteen" },
            };

            var teenNumber = ReassemblyTeenNumber(digits);

            return(teens[teenNumber]);
        }
Пример #14
0
        private string GetTensDigitWord(ExpandedDigits digits)
        {
            var tens = new Dictionary <int, string>
            {
                { 10, "ten" },
                { 20, "twenty" },
                { 30, "thirty" },
                { 40, "fourty" },
                { 50, "fifty" },
                { 60, "sixty" },
                { 70, "seventy" },
                { 80, "eighty" },
                { 90, "ninety" },
            };

            var lookup = digits.GetTensValue();

            return(digits.IsCompoundNumber() ? $"{tens[lookup]}-" : tens[lookup]);
        }
Пример #15
0
 private bool MultiDigitNumberEndingWithZero(ExpandedDigits digits)
 {
     return(!digits.IsSingleDigitNumber() && digits.Units == 0);
 }
Пример #16
0
 private int ReassemblyTeenNumber(ExpandedDigits digits)
 {
     return(digits.GetTensValue() + digits.Units);
 }