From bb0084e198a17f57e23ec598d69c85e6b75caebb Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Thu, 5 Nov 2015 13:30:27 -0500 Subject: [PATCH] more tests --- bristlecode.rb | 2 +- spec/bristlecode/parser_spec.rb | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/bristlecode.rb b/bristlecode.rb index 3491b57..34670a7 100644 --- a/bristlecode.rb +++ b/bristlecode.rb @@ -29,7 +29,7 @@ module Bristlecode rule(:tag_delim) { tag_open | tag_close } rule(:text) { (tag_delim.absent? >> any).repeat(1).as(:text) } - rule(:children) { space? >> elem.repeat(1) } + rule(:children) { space? >> elem.repeat } rule(:doc) { space? >> elem.repeat.as(:doc) } root(:doc) end diff --git a/spec/bristlecode/parser_spec.rb b/spec/bristlecode/parser_spec.rb index 997f5b4..2317ea4 100644 --- a/spec/bristlecode/parser_spec.rb +++ b/spec/bristlecode/parser_spec.rb @@ -10,6 +10,10 @@ module Bristlecode expect(parser).to parse('') end + it 'can parse whitespace' do + expect(parser).to parse(' ') + end + it 'can parse plain text' do expect(parser).to parse('this is some plain text') end @@ -23,6 +27,15 @@ module Bristlecode expect(parser.bold).to parse('[B]bolded contents here[/B]') end + it 'can parse an empty bold tag' do + expect(parser.bold).to parse('[b][/b]') + end + + it 'can parse nested tags' do + expect(parser.bold).to parse('[b] one [b] two [/b] three [/b]') + expect(parser.bold).to parse('[b] one [i] two [/i] three [/b]') + end + it 'can parse an unclosed tag' do expect(parser.bold).to parse('[b]bolded contents here') expect(parser.bold).to parse('[B]bolded contents here') @@ -49,6 +62,15 @@ module Bristlecode expect(parser.italic).to parse('[I]italiced contents here[/I]') end + it 'can parse an empty italic tag' do + expect(parser.italic).to parse('[i][/i]') + end + + it 'can parse nested tags' do + expect(parser.italic).to parse('[i] one [i] two [/i] three [/i]') + expect(parser.italic).to parse('[i] one [b] two [/b] three [/i]') + end + it 'can parse an unclosed tag' do expect(parser.italic).to parse('[i]italiced contents here') expect(parser.italic).to parse('[I]italiced contents here')