コード例 #1
0
        public void MustUnderstandTwoSymbolsAsII()
        {
            RomanNumberConverter roman = new RomanNumberConverter();
            int number = roman.Converts("II");

            Assert.AreEqual(2, number);
        }
コード例 #2
0
        public void MustUnderstandFourSymbolsTwoByTwoAsXXII()
        {
            RomanNumberConverter roman = new RomanNumberConverter();
            int number = roman.Converts("XXII");

            Assert.AreEqual(22, number);
        }
コード例 #3
0
        public void MustUnderstandNumbersAsIX()
        {
            RomanNumberConverter roman = new RomanNumberConverter();
            int number = roman.Converts("IX");

            Assert.AreEqual(9, number);
        }
コード例 #4
0
        public void MustUnderstandComplexNumbersAsXXIV()
        {
            RomanNumberConverter roman = new RomanNumberConverter();
            int number = roman.Converts("XXIV");

            Assert.AreEqual(24, number);
        }
コード例 #5
0
        public void MustUnderstandTheSymbolV()
        {
            RomanNumberConverter roman = new RomanNumberConverter();
            int number = roman.Converts("V");

            Assert.AreEqual(5, number);
        }
コード例 #6
0
        public void BuilderRomanNumberTest(string symbol, int value)
        {
            var romanNumberConverter = new RomanNumberConverter();
            var number = romanNumberConverter.Convert(symbol);

            Assert.AreEqual(value, number);
        }
コード例 #7
0
        public void Given_ValidRomanSymbol_Then_ConvertSymbolToDigit(string romanSymbol, int expected)
        {
            // Act
            int numeralDigit = RomanNumberConverter.Convert(romanSymbol);

            // Assert
            numeralDigit.Should().Be(expected);
        }
コード例 #8
0
        public void Given_RomanNumber_Then_ConvertToNumeralNumber(string romanNumber, int expected)
        {
            // Act
            int numeralNumber = RomanNumberConverter.Convert(romanNumber);

            // Asset
            numeralNumber.Should().Be(expected);
        }
コード例 #9
0
 public NumberConverterFactory()
 {
     _converters = new Dictionary <string, INumberConverter>();
     _converters["Numerical"]   = new NumericalNumberConverter();
     _converters["Binary"]      = new BinaryNumberConverter();
     _converters["Hexadecimal"] = new HexadecimalNumberConverter();
     _converters["Roman"]       = new RomanNumberConverter();
     _converters["Octal"]       = new OctalNumberConverter();
 }
コード例 #10
0
        public void NineReturnsIX()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(9);

            // Assert
            Assert.AreEqual("IX", actual, "9 should be translated to IX");
        }
コード例 #11
0
        public void SixReturnsVI()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(6);

            // Assert
            Assert.AreEqual("VI", actual, "6 should be translated to VI");
        }
コード例 #12
0
        public void NineReturnsIX()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(9);

            // Assert
            Assert.AreEqual("IX", actual, "9 should be translated to IX");
        }
コード例 #13
0
        public void TenReturnsX()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(10);

            // Assert
            Assert.AreEqual("X", actual, "10 should be translated to X");
        }
コード例 #14
0
        public void OneReturnsI()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(1);

            // Assert
            Assert.AreEqual("I", actual, "1 should be translated to I");
        }
コード例 #15
0
        public void FourReturnsIV()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(4);

            // Assert
            Assert.AreEqual("IV", actual, "4 should be translated to IV");
        }
コード例 #16
0
        public void FiveReturnsV()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(5);

            // Assert
            Assert.AreEqual("V", actual, "5 should be translated to V");
        }
コード例 #17
0
        public void SixReturnsVI()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(6);

            // Assert
            Assert.AreEqual("VI", actual, "6 should be translated to VI");
        }
コード例 #18
0
        public void FiveReturnsV()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(5);

            // Assert
            Assert.AreEqual("V", actual, "5 should be translated to V");
        }
コード例 #19
0
        public void OneReturnsI()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(1);

            // Assert
            Assert.AreEqual("I", actual, "1 should be translated to I");
        }
コード例 #20
0
        public void FourReturnsIV()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(4);

            // Assert
            Assert.AreEqual("IV", actual, "4 should be translated to IV");
        }
コード例 #21
0
        public void Should_Convert_Roman_To_Number()
        {
            // arrange
            RomanNumberConverter rtn = new RomanNumberConverter();

            // act
            int number1 = rtn.Convert("MMVI");

            // assert
            Assert.AreEqual(4, number1);
        }
コード例 #22
0
        public void ParseRomanToInt(int expected, string roman)
        {
            //arrange
            var parser = new RomanNumberConverter();

            // act
            var result = parser.ConvertRomanToInt(roman);

            //assert

            Assert.That(result, Is.EqualTo(expected));
        }
コード例 #23
0
        public void Given_MultipleInvalidRomanSymbols_Then_ThrowInvalidRomanSymbolException()
        {
            // Arrange
            const string invalidSymbols = "RP";

            // Act
            Action action = () => RomanNumberConverter.Convert(invalidSymbols);

            // Asset
            action.Should()
            .Throw <InvalidRomanSymbolException>()
            .WithMessage("R, P are invalid roman symbols");
        }
コード例 #24
0
        public void Given_InvalidRomanSymbol_Then_ThrowInvalidRomanSymbolException()
        {
            // Arrange
            const string invalidSymbol = "R";

            // Act
            Action action = () => RomanNumberConverter.Convert(invalidSymbol);

            // Asset
            action.Should()
            .Throw <InvalidRomanSymbolException>()
            .WithMessage("R is an invalid roman symbol");
        }
コード例 #25
0
    /// <summary>文字列内の数値を取得します。</summary>
    /// <param name="source">対象の文字列を表す string。</param>
    /// <param name="type">開始文字の種類を表す <see cref="CharTypes"/>。</param>
    /// <param name="pos">開始位置を表す int。</param>
    /// <param name="value">取得した数値を表す long。</param>
    /// <returns>数値を取得出来た場合は <see langword="true"/>、それ以外の場合は <see langword="false"/>。</returns>
    private bool GetNumber(string source, CharTypes type, ref int pos, out long value)
    {
        INumberComverter number = null;

        switch (type)
        {
        case CharTypes.Number: number = new NumberConverter(source[pos]); break;

        case CharTypes.RomanNumber: number = new RomanNumberConverter(source[pos]); break;

        case CharTypes.JpRomanNumber: number = new JpRomanNumberConverter(source[pos]); break;

        case CharTypes.CircleNumber: number = new CircleNumberConverter(source[pos]); break;

        case CharTypes.KanjiNumber: number = new KanjiNumberConverter(source[pos]); break;
        }

        for (int i = pos + 1; i < source.Length; i++)
        {
            if (number.AddChar(source[i]) == false)
            {
                break;
            }
        }

        if (number.IsError == false)
        {
            value = number.Value;
            pos  += number.Length;
        }
        else
        {
            value = 0;
        }

        return(number.IsError == false);
    }
コード例 #26
0
        public void Need_Convert_VII_For_7()
        {
            var Conversor = new RomanNumberConverter();

            Assert.AreEqual(7, Conversor.ConvertToInt("VII"));
        }
コード例 #27
0
        public void Need_Convert_III_For_3()
        {
            var Conversor = new RomanNumberConverter();

            Assert.AreEqual(3, Conversor.ConvertToInt("III"));
        }
コード例 #28
0
        public void Throw_Excepetion_With_No_Knowledge_Chars()
        {
            var Conversor = new RomanNumberConverter();

            Conversor.ConvertToInt('Z');
        }
コード例 #29
0
        public void Need_Convert_V_For_10()
        {
            var Conversor = new RomanNumberConverter();

            Assert.AreEqual(10, Conversor.ConvertToInt('X'));
        }
コード例 #30
0
        public void Need_Convert_I_For_1()
        {
            var Conversor = new RomanNumberConverter();

            Assert.AreEqual(1, Conversor.ConvertToInt('I'));
        }
コード例 #31
0
        public void Need_Convert_IX_For_9()
        {
            var Conversor = new RomanNumberConverter();

            Assert.AreEqual(9, Conversor.ConvertToInt("IX"));
        }
コード例 #32
0
        public void Need_Convert_IV_For_4()
        {
            var Conversor = new RomanNumberConverter();

            Assert.AreEqual(4, Conversor.ConvertToInt("IV"));
        }
コード例 #33
0
        public void TenReturnsX()
        {
            // Arrange
            var romanNumberConverter = new RomanNumberConverter();

            // Act
            var actual = romanNumberConverter.Convert(10);

            // Assert
            Assert.AreEqual("X", actual, "10 should be translated to X");
        }
コード例 #34
0
        public void RomanNumberConverter_ToRoman_CorrectOutput(string expectedValue, int num)
        {
            var result = RomanNumberConverter.ToRoman(num);

            Assert.AreEqual(expectedValue, result);
        }
コード例 #35
0
        public void RomanNumberConverter_ToNumber_CorrectOutput(string num, int expectedValue)
        {
            var result = RomanNumberConverter.ToNumberWithValidation(num);

            Assert.AreEqual(expectedValue, result);
        }
コード例 #36
0
 public void RomanNumberConverter_ToNumber_InvalidCases_ExceptionThrown(string num)
 {
     Assert.Throws <ArgumentException>(() => RomanNumberConverter.ToNumberWithValidation(num));
 }