private IT9Keypad CreateT9Keypad()
        {
            IT9Button button1 = A.Fake <IT9Button>();

            A.CallTo(() => button1.Label).Returns('1');
            A.CallTo(() => button1.Symbols).Returns(new[] { 'a', 'b' });
            A.CallTo(() => button1.GetPressCount('a')).Returns(1);
            A.CallTo(() => button1.GetPressCount('b')).Returns(2);

            IT9Button button2 = A.Fake <IT9Button>();

            A.CallTo(() => button2.Label).Returns('2');
            A.CallTo(() => button2.Symbols).Returns(new[] { 'c', 'd' });
            A.CallTo(() => button2.GetPressCount('c')).Returns(1);
            A.CallTo(() => button2.GetPressCount('d')).Returns(2);

            IT9Keypad keypad = A.Fake <IT9Keypad>();

            A.CallTo(() => keypad.GetButton('a')).Returns(button1);
            A.CallTo(() => keypad.GetButton('b')).Returns(button1);
            A.CallTo(() => keypad.GetButton('c')).Returns(button2);
            A.CallTo(() => keypad.GetButton('d')).Returns(button2);

            return(keypad);
        }
        public void Convert_Converts(string text, string expectedT9)
        {
            // Arrange
            IT9Keypad keypad            = CreateT9Keypad();
            SimpleTextToT9Converter sut = new SimpleTextToT9Converter(keypad);

            // Act
            string t9 = sut.Convert(text);

            // Assert
            t9.Should().Be(expectedT9);
        }
        public void Convert_IfKeypadGetButtonThrows_Throws()
        {
            // Arrange
            Exception exception = new Exception();
            IT9Keypad keypad    = A.Fake <IT9Keypad>();

            A.CallTo(() => keypad.GetButton(A <char> .Ignored)).Throws(() => exception);

            SimpleTextToT9Converter sut = new SimpleTextToT9Converter(keypad);

            // Act
            Action act = () => sut.Convert("*");

            // Assert
            act.Should().Throw <Exception>().Where(e => ReferenceEquals(e, exception));
        }
 public SimpleTextToT9Converter(IT9Keypad keypad) =>
 this.keypad = keypad ?? throw new ArgumentNullException(nameof(keypad));