public void WhenComponentKeyDoesNotMatch()
        {
            // Arrange
            string longName  = nameof(longName);
            string shortName = nameof(shortName);
            string key       = nameof(key);

            DirectiveComponents components = new DirectiveComponents(key, null, null);

            var mock = new Mock <DirectiveHandler>();

            mock.Setup(h => h.LongName).Returns(longName);
            mock.Setup(h => h.ShortName).Returns(shortName);

            DirectiveHandler sut = mock.Object;

            // Act
            Directive directive;
            bool      result = sut.TryParse(components, out directive);

            // Assert
            Assert.AreNotEqual(longName, key);
            Assert.AreNotEqual(shortName, key);
            Assert.IsFalse(result);
            Assert.IsNull(directive);
        }
        protected override bool TryCreate(DirectiveComponents components, out Directive directive)
        {
            int value;

            if (int.TryParse(components.Value, out value))
            {
                directive = new ChordSizeDirective(value);
                return(true);
            }

            directive = null;
            return(false);
        }
예제 #3
0
        public void TryParseTest_LongForm_Other()
        {
            // Arrange
            string input = $"{{pagetype: not a valid page type}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = PageTypeHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsFalse(result);
        }
예제 #4
0
        private void DoTryParseTest(string input, bool expectedResult, string expectedKey, string expectedSubKey, string expectedValue)
        {
            // Arrange
            DirectiveComponents components;

            // Act
            bool result = DirectiveComponents.TryParse(input, out components);

            // Assert
            Assert.AreEqual(expectedResult, result);
            Assert.AreEqual(expectedKey, components?.Key);
            Assert.AreEqual(expectedSubKey, components?.SubKey);
            Assert.AreEqual(expectedValue, components?.Value);
        }
        public virtual void TryParseTest_ShortForm()
        {
            // Arrange
            string input = _shortForm;
            DirectiveComponents components = DirectiveComponents.Parse(input);
            Directive           directive;

            // Act
            bool result = _sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(TDirective));
        }
예제 #6
0
        public void TryParseTest_NaN()
        {
            // Arrange
            string input = $"{{columns: NaN}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = ColumnsHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsFalse(result);
            Assert.IsNull(directive);
        }
예제 #7
0
        public void TryParseTest_ShortForm()
        {
            // Arrange
            int    fontSize = 9;
            string input    = $"{{ts: {fontSize}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = TextSizeHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(TextSizeDirective));
            Assert.AreEqual(fontSize, (directive as TextSizeDirective).FontSize);
        }
예제 #8
0
        protected override bool TryCreate(DirectiveComponents components, out Directive directive)
        {
            switch (components.Value.ToLower())
            {
            case "a4":
                directive = new PageTypeDirective(PageType.A4);
                return(true);

            case "letter":
                directive = new PageTypeDirective(PageType.Letter);
                return(true);

            default:
                directive = null;
                return(false);
            }
        }
예제 #9
0
        public void TryParseTest_ShortForm()
        {
            // Arrange
            int    number = 3;
            string input  = $"{{col: {number}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = ColumnsHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(ColumnsDirective));
            Assert.AreEqual(number, (directive as ColumnsDirective).Number);
        }
        public void TryParseTest_ShortForm()
        {
            // Arrange
            string comment = "some comment";
            string input   = $"{{ci: {comment}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = CommentItalicHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(CommentItalicDirective));
            Assert.AreEqual(comment, (directive as CommentItalicDirective).Text);
        }
        public void TryParseTest_LongForm_Center()
        {
            // Arrange
            Alignment           alignment  = Alignment.Center;
            string              input      = $"{{titles: center}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = TitlesHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(TitlesDirective));
            Assert.AreEqual(alignment, (directive as TitlesDirective).Flush);
        }
        public void TryParseTest_LongForm()
        {
            // Arrange
            string color = "red";
            string input = $"{{chordcolour: {color}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = ChordColourHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(ChordColourDirective));
            Assert.AreEqual(color, (directive as ChordColourDirective).Colour);
        }
예제 #13
0
        protected override bool TryCreate(DirectiveComponents components, out Directive directive)
        {
            switch (components.Value.ToLower())
            {
            case "left":
                directive = new TitlesDirective(Alignment.Left);
                return(true);

            case "center":
                directive = new TitlesDirective(Alignment.Center);
                return(true);

            default:
                directive = null;
                return(false);
            }
        }
        public void TryParseTest_ShortForm()
        {
            // Arrange
            string subtitle = "some subtitle";
            string input    = $"{{st: {subtitle}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = SubtitleHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(SubtitleDirective));
            Assert.AreEqual(subtitle, (directive as SubtitleDirective).Text);
        }
예제 #15
0
        public void TryParseTest_ShortForm()
        {
            // Arrange
            string fontFamily = "times";
            string input      = $"{{tf: {fontFamily}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = TextFontHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(TextFontDirective));
            Assert.AreEqual(fontFamily, (directive as TextFontDirective).FontFamily);
        }
예제 #16
0
        public void TryParseTest_LongForm_A4()
        {
            // Arrange
            PageType            pageType   = PageType.A4;
            string              input      = $"{{pagetype: a4}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = PageTypeHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(PageTypeDirective));
            Assert.AreEqual(pageType, (directive as PageTypeDirective).PageType);
        }
예제 #17
0
        public void TryParseTest_LongForm()
        {
            // Arrange
            string chord      = "X";
            string definition = "some definition";
            string input      = $"{{define {chord}: {definition}}}";
            DirectiveComponents components = DirectiveComponents.Parse(input);
            DirectiveHandler    sut        = DefineHandler.Instance;
            Directive           directive;

            // Act
            bool result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsTrue(result);
            Assert.IsInstanceOfType(directive, typeof(DefineDirective));
            Assert.AreEqual(chord, (directive as DefineDirective).Chord);
            Assert.AreEqual(definition, (directive as DefineDirective).Definition);
        }
        public void WhenSubKeyIsRequiredButIsMissing()
        {
            // Arrange
            string key = nameof(key);

            DirectiveComponents components = new DirectiveComponents(key, null, null);

            var mock = new Mock <DirectiveHandler>();

            mock.Setup(h => h.LongName).Returns(key);
            mock.Setup(h => h.SubKey).Returns(ComponentPresence.Required);
            mock.Setup(h => h.Value).Returns(ComponentPresence.Optional);

            DirectiveHandler sut = mock.Object;

            // Act
            Directive directive;
            bool      result = sut.TryParse(components, out directive);

            // Assert
            Assert.IsFalse(result);
            Assert.IsNull(directive);
        }
 protected override bool TryCreate(DirectiveComponents components, out Directive directive)
 {
     directive = new ChordColourDirective(components.Value);
     return(true);
 }
예제 #20
0
 protected override bool TryCreate(DirectiveComponents components, out Directive directive)
 {
     directive = new NewPageDirective();
     return(true);
 }
예제 #21
0
 protected override bool TryCreate(DirectiveComponents components, out Directive directive)
 {
     directive = new DefineDirective(components.SubKey, components.Value);             //TODO: allow various formats
     return(true);
 }
예제 #22
0
 protected override bool TryCreate(DirectiveComponents components, out Directive directive)
 {
     directive = new SubtitleDirective(components.Value);
     return(true);
 }
 protected override bool TryCreate(DirectiveComponents components, out Directive directive)
 {
     directive = new CommentItalicDirective(components.Value);
     return(true);
 }
 protected override bool TryCreate(DirectiveComponents components, out Directive directive)
 {
     directive = new EndOfChorusDirective();
     return(true);
 }