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("...."); }
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); }
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>(); }
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); }
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); }
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); }
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); }
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>(); }
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"); }