Example #1
0
        public void ManualInputParser_Parse_block_creates_complex_nested_complex_surrounded_by_positives()
        {
            const string template    = @"....{Post}{Comments}...{/Comments}{/Post}....";
            IInputParser inputParser = new ManualInputParser();

            var stream  = template.ToStream();
            var stencil = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(3);
            var element0 = stencil.ElementAt(0) as Positive;

            element0.ShouldNotBeNull();
            element0.Value.ShouldEqual("....");

            var element1 = stencil.ElementAt(1) as ComplexNegative <BlogTemplate, BlogPost>;

            element1.ShouldNotBeNull();
            element1.Spaces.Count().ShouldEqual(1);
            var element1space = element1.Spaces.Single() as ComplexNegative <BlogPost, Comment>;

            element1space.ShouldNotBeNull();
            var element1spacespace = element1space.Spaces.Single() as Positive;

            element1spacespace.ShouldNotBeNull();
            element1spacespace.Value.ShouldEqual("...");

            stencil.OfType <ComplexNegative <BlogTemplate, BlogPost> >().Single().Spaces
            .OfType <ComplexNegative <BlogPost, Comment> >().Single().Spaces.Count().ShouldEqual(1);
            var element2 = stencil.ElementAt(2) as Positive;

            element2.ShouldNotBeNull();
            element2.Value.ShouldEqual("....");
        }
Example #2
0
        public void ManualInputParser_Parse_block_creates_complex_positive_complex()
        {
            const string template    = @"{Post}......{/Post}positive{Post}......{/Post}";
            IInputParser inputParser = new ManualInputParser();

            var stream  = template.ToStream();
            var stencil = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(3);
            stencil.OfType <ComplexNegative <BlogTemplate, BlogPost> >().Count().ShouldEqual(2);

            stencil.ElementAt(0).CanHandle(new BlogTemplate()).ShouldBeTrue();
            var element0 = stencil.ElementAt(0) as ComplexNegative <BlogTemplate, BlogPost>;

            element0.Spaces.Count().ShouldEqual(1);

            var element1 = stencil.ElementAt(1) as Positive;

            element1.ShouldNotBeNull();
            element1.Value.ShouldEqual("positive");

            stencil.ElementAt(2).CanHandle(new BlogTemplate()).ShouldBeTrue();
            var element2 = stencil.ElementAt(2) as ComplexNegative <BlogTemplate, BlogPost>;

            element2.Spaces.Count().ShouldEqual(1);
        }
Example #3
0
        public void ManualInputParser_Parse_should_return_single_positive_space()
        {
            IInputParser inputParser = new ManualInputParser();
            var          stream      = "asdf".ToStream();
            var          stencil     = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();
            stencil.Count().ShouldEqual(1);
            stencil.Single().ShouldBeType <Positive>();
        }
Example #4
0
        public void ManualInputParser_Parse_should_return_single_simple_negative_space()
        {
            IInputParser inputParser = new ManualInputParser();
            var          stream      = "{PageTitle}".ToStream();
            var          stencil     = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(1);
        }
Example #5
0
        public void ManualInputParser_Parse_can_handle_two_interpolating_tokens()
        {
            const string template    = "asdf{Url('hi/world/again')} but there is more jibberish to be written.";
            IInputParser inputParser = new ManualInputParser();
            var          stream      = template.ToStream();
            var          stencil     = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(3);
        }
Example #6
0
        public void ManualInputParser_Parse_creates_spaces_for_simple_inside_block_surrounded_by_many_chars()
        {
            const string template    = "{Posts}...{Post.Title}...{/Posts}";
            IInputParser inputParser = new ManualInputParser();
            var          stream      = template.ToStream();
            var          stencil     = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(1);
            var complexNeg = stencil.Single() as ComplexNegative <BlogTemplate, BlogPost>;

            complexNeg.Spaces.Count().ShouldEqual(3);
        }
Example #7
0
        public void ManualInputParser_Parse_block_creates_complex_negative()
        {
            const string template    = @"{Post}......{/Post}";
            IInputParser inputParser = new ManualInputParser();

            var stream  = template.ToStream();
            var stencil = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(1);
            stencil.Single().ShouldBeType <ComplexNegative <BlogTemplate, BlogPost> >();
            stencil.Single().CanHandle(new BlogTemplate()).ShouldBeTrue();
            stencil.OfType <ComplexNegative <BlogTemplate, BlogPost> >().Single().Spaces.Count().ShouldEqual(1);
        }
Example #8
0
        public void ManualInputParser_Parse_returns_3_results_for_token_literal_token()
        {
            const string template = "{PageTitle}...{PageTitle}";

            IInputParser inputParser = new ManualInputParser();

            var stream  = template.ToStream();
            var stencil = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(3);
            stencil.ElementAt(0).ShouldBeType <SimpleNegative>();
            stencil.ElementAt(1).ShouldBeType <Positive>();
            stencil.ElementAt(2).ShouldBeType <SimpleNegative>();
        }
Example #9
0
        public void ManualInputParser_Parse_block_gets_nested_simple_negative()
        {
            const string template    = @"{Post}{PostTitle}{/Post}";
            IInputParser inputParser = new ManualInputParser();

            var stream  = template.ToStream();
            var stencil = inputParser.Parse(_builder.Token, stream);

            stream.Dispose();

            stencil.Count().ShouldEqual(1);
            var cn = stencil.ElementAt(0) as ComplexNegative <BlogTemplate, BlogPost>;

            cn.Spaces.Single().ShouldBeType <SimpleNegative>();
            var sb = new StringBuilder();

            cn.Spaces.First().GetContents(new BlogPost {
                PostTitle = "asdf"
            }, sb);
            sb.ToString().ShouldEqual("asdf");
        }