The code is now completely covered in specs
[lyrix.git] / spec / lib / lyric_parser_spec.rb
blob8733eb083d093cedc2bde39cdc4844860597e1fb
1 require File.dirname(__FILE__) + '/../spec_helper'
2 require 'lyric_parser'
4 describe Lyrix::LyricParser do
5   before do
6     @parser = Lyrix::LyricParser.new("")
7   end
8   
9   it "should split slides by blank lines" do
10     @parser.lyrics = <<-LYRICS
11 This is a test of the lyrics
12 Hopefully this will get split up appropriately
14 This text should be on slide 2
15 As should this
17 Here comes slide three
18     LYRICS
20     @parser.to_slides.size.should == 3
21   end
23   it "should allow spaces in blank lines of lyrics" do
24     @parser.lyrics = <<-LYRICS
25 This is a test of the lyrics
26 Hopefully this will get split up appropriately
28 This text should be on slide 2
29 As should this
31 Here comes slide three
32     LYRICS
34     @parser.to_slides.size.should == 3
35   end
37   it "should not include blank slides" do
38     @parser.lyrics = <<-LYRICS
39 This is a test of the lyrics
40 Hopefully this will get split up appropriately
44 This text should be on slide 2
45 As should this
48 Here comes slide three
51     LYRICS
53     @parser.to_slides.size.should == 3
54     @parser.to_slides.each { |s| s.should_not == "" }
55   end
57   it "should substitute a chorus in if given" do
58     @parser.lyrics = <<-LYRICS
59 This is a test of the lyrics
60 Hopefully this will get split up appropriately
62 [chorus]
63 This text should be on slide 2
64 As should this
66 Here comes slide three
68 [chorus]
69     LYRICS
71     @parser.to_slides.size.should == 4
72     @parser.to_slides[3].should == "This text should be on slide 2\nAs should this"
73   end
75   it "should substitute a bridge in if given" do
76     @parser.lyrics = <<-LYRICS
77 This is a test of the lyrics
78 Hopefully this will get split up appropriately
80 [bridge]
81 This text should be on slide 2
82 As should this
84 Here comes slide three
86 [bridge]
87     LYRICS
89     @parser.to_slides.size.should == 4
90     @parser.to_slides[3].should == "This text should be on slide 2\nAs should this"
91   end
93   it "should substitute a chorus and bridge in if both are given" do
94     @parser.lyrics = <<-LYRICS
95 This is a test of the lyrics
96 Hopefully this will get split up appropriately
98 [chorus]
99 This text should be on slide 2
100 As should this
102 [bridge]
103 Here comes slide three
105 [chorus]
107 Some content
109 [bridge]
110     LYRICS
112     @parser.to_slides.size.should == 6
113     @parser.to_slides[3].should == "This text should be on slide 2\nAs should this"
114     @parser.to_slides[1].should == @parser.to_slides[3]
115     @parser.to_slides[2].should == @parser.to_slides[5]
116   end
117   
118   it "should repeat whole slides if asked" do
119     @parser.lyrics = <<-LYRICS
120 This is a test of the lyrics
121 Hopefully this will get split up appropriately
123 [2x]
124 This text should be on slide 2
125 As should this
127 [3x]
128 Here comes slide three
129     LYRICS
131     @parser.to_slides.size.should == 6
132   end
133   
134   it "should repeat single lines if asked" do
135     @parser.lyrics = <<-LYRICS
136 This is a test of the lyrics [2x]
137 Hopefully this will get split up appropriately
139 This text should be on slide 2
140 As should this
142 Here comes slide three
143     LYRICS
145     @parser.to_slides.size.should == 3
146     @parser.to_slides[0].split("\n").size.should == 3
147   end