public void Setup()
        {
            _relativeCoords = new Mock <IAzureCreateRelativeCoordinate>();
            _createWord     = new Mock <ICreateWordFromAzureWord>();

            _imgWidth  = 100;
            _imgHeight = 200;
            _word1     = new Word();
            _word2     = new Word();
            _word3     = new Word();
            _line      = new Line {
                Words = new List <Word>()
                {
                    _word1, _word2, _word3
                }
            };

            var metaWord1Mock = new Mock <IWord>();
            var metaWord2Mock = new Mock <IWord>();
            var metaWord3Mock = new Mock <IWord>();

            _metaWord1 = metaWord1Mock.Object;
            _metaWord2 = metaWord2Mock.Object;
            _metaWord3 = metaWord3Mock.Object;

            metaWord1Mock.Setup(x => x.Value).Returns("This is");
            metaWord2Mock.Setup(x => x.Value).Returns("a");
            metaWord3Mock.Setup(x => x.Value).Returns("very important test");

            _createWord.Setup(x => x.Execute(_word1, _imgWidth, _imgHeight)).Returns(metaWord1Mock.Object);
            _createWord.Setup(x => x.Execute(_word2, _imgWidth, _imgHeight)).Returns(metaWord2Mock.Object);
            _createWord.Setup(x => x.Execute(_word3, _imgWidth, _imgHeight)).Returns(metaWord3Mock.Object);

            _target = new TransformAzureLineIntoSentence(_relativeCoords.Object, _createWord.Object);
        }
        public void GivenLineWithWords_WhenInvokingExecute_ThenSentenceValueIsConcatOfWordValues()
        {
            //Arrange
            var imgWidth  = 100;
            var imgHeight = 200;
            var word1     = new Word();
            var word2     = new Word();
            var word3     = new Word();
            var line      = new Line {
                Words = new List <Word>()
                {
                    word1, word2, word3
                }
            };

            var metaWord1 = new Mock <IWord>();
            var metaWord2 = new Mock <IWord>();
            var metaWord3 = new Mock <IWord>();

            metaWord1.Setup(x => x.Value).Returns("This is");
            metaWord2.Setup(x => x.Value).Returns("a");
            metaWord3.Setup(x => x.Value).Returns("very important test");

            _createWord.Setup(x => x.Execute(word1, imgWidth, imgHeight)).Returns(metaWord1.Object);
            _createWord.Setup(x => x.Execute(word2, imgWidth, imgHeight)).Returns(metaWord2.Object);
            _createWord.Setup(x => x.Execute(word3, imgWidth, imgHeight)).Returns(metaWord3.Object);

            //Act
            var result = _target.Execute(line, 0, imgWidth, imgHeight, 0);

            //Assert
            result.Value = "This is a very important test";
        }