describe 'Grammar' it 'should allow "it" spec literal' true.should.be_true end n = 10 it 'should allow literal javascript outside of blocks' n.should.eql 10 end it 'should escape in

descriptions

and body' '

'.should.eql '

' end it 'should parse correctly when "it" is within the body' text = 'Get it at Github' text.should.include 'it' end it 'should parse correctly when "describe" is within the body' text = 'It should work with describe' text.should.include 'describe' end it 'should parse correctly when "end" is within the body' text = 'This should not end the parsing :)' text.should.include 'not' end it 'should parse correctly with "before" and "after" within the body' text = 'This comes before that, which is after the rest' text.should.include 'before' end it 'should allow parens to be optional when no args are passed' true.should.be_true true.should.be_true() end it 'should not mess up with words like it or append in descriptions' -{ element.append().end() }.should.throw_error end it 'should not mess up "end" in strings' 'foo end bar'.should.not.eql 'foo }); bar' end it 'should allow semicolons' true.should.be_true; true.should.be_true(); true.should.be_true() ; end it 'should allow parens to be optional with args' 'foobar'.should.include 'foo' 'rawr'.should.not_include 'foo' end it 'should allow literals without defining variables variables' {}.should.be_an Object end it 'should allow alternative closure literal' -{ throw 'test' }.should.throw_error end it 'should allow grammar-less assertions' expect(true).to(be, true) expect([1,2,3]).to(include, 1, 2, 3) expect(true).not_to(be, false) end it 'should allow multi-line expect() assertions' expect(' \ foo \ bar \ ').to(include, 'foo', 'bar') end it 'should allow commenting out of conversions' // -{ throw 'foo' }.should.throw_error // foo.should.not.eql 'bar' end it 'should allow inclusive range literal n..n' 1..5.should.eql [1,2,3,4,5] 3..4.should.eql [3,4] 1..1.should.eql [1] 3..1.should.eql [3,2,1] end it 'should allow snakecase style assertions' 'foo'.should_equal('foo') 'foo'.should_equal 'foo' 'bar'.should_not_equal('foo') 'bar'.should_not_equal 'foo' end it 'should allow dot style assertions' 'foo'.should.equal('foo') 'foo'.should.equal 'foo' 'bar'.should.not.equal('foo') 'bar'.should.not.equal 'foo' end describe 'with nested describe' it 'should work' true.should.be_true end describe 'nested again' it 'should still work' true.should.be_true end end end describe 'before / after blocks' before n = 1 hits = [] hits.push('before') end after n = 0 hits.push('after') end it 'should work' n.should.eql 1 hits.should.eql ['before'] n++ end it 'should persist' n.should.eql 2 hits.should.eql ['before'] end describe 'with nested describe' it 'should be accessable' n.should.eql 1 hits.should.eql ['before'] end end end describe 'before_each / after_each blocks' hits = [] before_each n = 1 hits.push('before_each') end after_each o = 2 hits.push('after_each') end it 'should work' n.should.eql 1 hits.should.eql ['before_each'] n = 2 end it 'should not persist' n.should.eql 1 o.should.eql 2 hits.should.eql ['before_each', 'after_each', 'before_each'] end describe 'with nested describe' it 'should be accessable' n.should.eql 1 o.should.eql 2 hits.should.eql ['before_each', 'after_each', 'before_each', 'after_each', 'before_each'] end it 'should continue hits' hits.should.eql ['before_each', 'after_each', 'before_each', 'after_each', 'before_each', 'after_each', 'before_each'] end describe 'with more hooks' before_each hits.push('before_each') end after_each hits.push('after_each') end it 'should continue hits, while cascading properly' hits.should.eql ['before_each', 'after_each', 'before_each', 'after_each', 'before_each', 'after_each', 'before_each', 'after_each', 'before_each', 'before_each'] end end describe 'with multiple hooks' before_each hits = [] end before_each hits.push('before_each') end it 'should work' hits.should.eql ['before_each'] end end end end end __END__ describe 'Grammar' it 'should consider everything below __END__ a comment' end end