spec/ruco/style_map_spec.rb in ruco-0.0.50 vs spec/ruco/style_map_spec.rb in ruco-0.0.51
- old
+ new
@@ -11,87 +11,124 @@
it "reproduces simple styles" do
map.add(:red, 1, 3..5)
# red from 3 to 5
map.flatten.should == [
nil,
- [nil, nil, nil, [:red], nil, nil, []],
+ [nil, nil, nil, :red, nil, nil, :normal],
nil
]
end
it "reproduces merged styles" do
- map.add(:red, 1, 3..5)
map.add(:reverse, 1, 2..4)
+ map.add(:red, 1, 3..5)
# reverse at 2 -- reverse and red at 3,4 -- red at 5
map.flatten.should == [
nil,
- [nil, nil, [:reverse], [:reverse, :red], nil, [:red], []],
+ [nil, nil, :reverse, :red, nil, :red, :normal],
nil
]
end
+
+ it "overwrites styles" do
+ map.add(:reverse, 0, 0..1)
+ map.add(:normal, 0, 0..1)
+ map.flatten.should == [
+ [:normal, nil, :normal],
+ nil,
+ nil
+ ]
+ end
end
describe 'array style operations' do
it "adds two maps" do
s1 = Ruco::StyleMap.new(1)
s1.add(:reverse, 0, 0..1)
s2 = Ruco::StyleMap.new(2)
s2.add(:reverse, 0, 2..3)
(s1 + s2).flatten.should == [
- [[:reverse], nil, []],
- [nil, nil, [:reverse], nil, []],
+ [:reverse, nil, :normal],
+ [nil, nil, :reverse, nil, :normal],
nil
]
end
it "can shift" do
s = Ruco::StyleMap.new(2)
s.add(:reverse, 0, 0..1)
s.add(:reverse, 1, 1..2)
- s.shift.flatten.should == [[[:reverse],nil,[]]]
- s.flatten.should == [[nil, [:reverse],nil,[]]]
+ s.shift.flatten.should == [[:reverse, nil, :normal]]
+ s.flatten.should == [[nil, :reverse, nil, :normal]]
end
it "can pop" do
s = Ruco::StyleMap.new(2)
s.add(:reverse, 0, 0..1)
s.add(:reverse, 1, 1..2)
- s.pop.flatten.should == [[nil, [:reverse],nil,[]]]
- s.flatten.should == [[[:reverse],nil,[]]]
+ s.pop.flatten.should == [[nil, :reverse, nil, :normal]]
+ s.flatten.should == [[:reverse, nil, :normal]]
end
end
+ describe :left_pad! do
+ it "adds whitespace to left side" do
+ s = Ruco::StyleMap.new(2)
+ s.add(:reverse, 0, 0..1)
+ s.add(:reverse, 1, 1..2)
+ s.left_pad!(3)
+ s.flatten.should == [
+ [nil, nil, nil, :reverse, nil, :normal],
+ [nil, nil, nil, nil, :reverse, nil, :normal]
+ ]
+ end
+ end
+
+ describe :invert! do
+ it "inverts styles" do
+ s = Ruco::StyleMap.new(2)
+ s.add(:reverse, 0, 0..1)
+ s.add(:normal, 1, 1..2)
+ s.add(:red, 1, 4..5)
+ s.invert!
+ s.flatten.should == [
+ [:normal, nil, :normal],
+ [nil, :reverse, nil, nil, :red, nil, :normal]
+ ]
+ end
+ end
+
describe :styled do
it "can style an unstyled line" do
- Ruco::StyleMap.styled("a", nil).should == [[[], "a"]]
+ Ruco::StyleMap.styled("a", nil).should == [[:normal, "a"]]
end
- it "can style an styled line" do
- Ruco::StyleMap.styled("a", [[:reverse],nil]).should == [[[], ""], [[:reverse], "a"]]
+ it "can style a styled line" do
+ Ruco::StyleMap.styled("a", [:reverse ,nil]).should == [[:normal, ""], [:reverse, "a"]]
end
it "keeps unstyled parts" do
- Ruco::StyleMap.styled("abc", [[:reverse],[]]).should == [[[], ""], [[:reverse], "a"],[[],'bc']]
+ Ruco::StyleMap.styled("abc", [:reverse, :normal]).should == [[:normal, ""], [:reverse, "a"],[:normal,'bc']]
end
end
describe :curses_style do
it "is 'normal' for nothing" do
- Ruco::StyleMap.curses_style([]).should == Curses::A_NORMAL
+ Ruco::StyleMap.curses_style(:normal).should == Curses::A_NORMAL
end
it "is red for red" do
pending
- Ruco::StyleMap.curses_style([:red]).should == Curses::color_pair( Curses::COLOR_RED )
+ Ruco::StyleMap.curses_style(:red).should == Curses::color_pair( Curses::COLOR_RED )
end
it "is reverse for reverse" do
- Ruco::StyleMap.curses_style([:reverse]).should == Curses::A_REVERSE
+ Ruco::StyleMap.curses_style(:reverse).should == Curses::A_REVERSE
end
it "raises on unknown style" do
lambda{
- Ruco::StyleMap.curses_style([:foo])
+ Ruco::StyleMap.curses_style(:foo)
}.should raise_error
end
end
-end
\ No newline at end of file
+end