private string GetThousandsWord(ExpandedDigits expandedDigits) { if (expandedDigits.Thousands == 0 || expandedDigits.CanCompressFourDigitNumberIntoThreeDigitNotation()) { return(NumberNotFound); } return(GetUnitsWord(expandedDigits.Thousands) + " thousand "); }
private string GetGatedUnitWord(ExpandedDigits digits) { if (digits.IsTeenNumber() || MultiDigitNumberEndingWithZero(digits)) { return(NumberNotFound); } return(GetUnitsWord(digits.Units)); }
public void IsSingleDigitNumber_When0Through9_ShouldReturnTrue(int units) { //---------------Arrange------------------- var sut = new ExpandedDigits { Units = units }; //---------------Act---------------------- var actual = sut.IsSingleDigitNumber(); //---------------Assert----------------------- actual.Should().BeTrue(); }
public void IsTeenNumber_WhenIs20_ShouldReturnFalse() { //---------------Arrange------------------- var sut = new ExpandedDigits { Tens = 2, Units = 0 }; //---------------Act---------------------- var actual = sut.IsTeenNumber(); //---------------Assert----------------------- actual.Should().BeFalse(); }
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(); }
private string GetTensWord(ExpandedDigits digits) { if (digits.Tens == 0) { return(NumberNotFound); } if (digits.IsTeenNumber()) { return(GetTeenNumberWord(digits)); } return(GetTensDigitWord(digits)); }
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(); }
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); }
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(); }
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); }
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); }
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 "); }
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]); }
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]); }
private bool MultiDigitNumberEndingWithZero(ExpandedDigits digits) { return(!digits.IsSingleDigitNumber() && digits.Units == 0); }
private int ReassemblyTeenNumber(ExpandedDigits digits) { return(digits.GetTensValue() + digits.Units); }