spec/graphics/graphics_text_spec.rb in squib-0.3.0 vs spec/graphics/graphics_text_spec.rb in squib-0.4.0
- old
+ new
@@ -2,132 +2,143 @@
require 'squib'
describe Squib::Card, '#text' do
context 'typical inputs' do
+ let(:deck) { double(Squib::Deck) }
+ let(:context) { double(Cairo::Context) }
+ let(:layout) { double(Pango::Layout) }
+ let(:font_desc) { double(Pango::FontDescription) }
+
before(:each) do
- @deck = double(Squib::Deck)
- @context = double(Cairo::Context)
- @layout = double(Pango::Layout)
- allow(Cairo::Context).to receive(:new).and_return(@context)
+ allow(Cairo::Context).to receive(:new).and_return(context)
+ allow(deck).to receive(:dir).and_return('_output')
+ allow(deck).to receive(:count_format).and_return('%02d')
+ allow(deck).to receive(:prefix).and_return('card_')
+ allow(deck).to receive(:antialias).and_return('best')
end
it 'make all the expected calls on a smoke test' do
- mock_squib_logger(@old_logger) do
- extent = Pango::Rectangle.new(50,60,100,200)
- expect(Squib.logger).to receive(:debug).once
- expect(@context).to receive(:save).once
- expect(@context).to receive(:set_source_color).once
- expect(@context).to receive(:move_to).with(10, 15).once
- expect(@context).to receive(:translate).with(-10, -15).once
- expect(@context).to receive(:rotate).with(0.0).once
- expect(@context).to receive(:translate).with(10, 15).once
- expect(@context).to receive(:create_pango_layout).once.and_return(@layout)
- expect(@layout).to receive(:font_description=).with(Pango::FontDescription.new('Sans 12')).once
- expect(@layout).to receive(:text=).with('foo').once
- expect(@layout).to receive(:width=).with(20 * Pango::SCALE).once
- expect(@layout).to receive(:height=).with(25 * Pango::SCALE).once
- expect(@layout).to receive(:ellipsize=).with(Pango::Layout::ELLIPSIZE_NONE).once
- expect(@layout).to receive(:alignment=).with(Pango::Layout::ALIGN_LEFT).once
- expect(@layout).to receive(:justify=).with(false).once
- expect(@layout).to receive(:spacing=).with(1.0 * Pango::SCALE).once
- expect(@context).to receive(:update_pango_layout).once
- expect(@layout).to receive(:height).once.and_return(25)
- expect(@layout).to receive(:extents).thrice.and_return([nil,extent])
- expect(@context).to receive(:update_pango_layout).once
- expect(@context).to receive(:show_pango_layout).once
- expect(@context).to receive(:restore).once
+ extent = Pango::Rectangle.new(50,60,100,200)
+ expect(Squib.logger).to receive(:debug).once
+ expect(context).to receive(:antialias=).with('subpixel').once
+ expect(context).to receive(:save).once
+ expect(context).to receive(:set_source_color).once
+ expect(context).to receive(:move_to).with(10, 15).once
+ expect(context).to receive(:translate).with(-10, -15).once
+ expect(context).to receive(:rotate).with(0.0).once
+ expect(context).to receive(:translate).with(10, 15).once
+ expect(context).to receive(:create_pango_layout).once.and_return(layout)
+ expect(Pango::FontDescription).to receive(:new).with('Sans 12').and_return(font_desc)
+ expect(layout ).to receive(:font_description=).with(font_desc).once
+ expect(layout ).to receive(:text=).with('foo').once
+ expect(layout ).to receive(:width=).with(20 * Pango::SCALE).once
+ expect(layout ).to receive(:height=).with(25 * Pango::SCALE).once
+ expect(layout ).to receive(:ellipsize=).with(Pango::Layout::ELLIPSIZE_NONE).once
+ expect(layout ).to receive(:alignment=).with(Pango::Layout::ALIGN_LEFT).once
+ expect(layout ).to receive(:justify=).with(false).once
+ expect(layout ).to receive(:spacing=).with(1.0 * Pango::SCALE).once
+ expect(context).to receive(:update_pango_layout).once
+ expect(layout ).to receive(:height).once.and_return(25)
+ expect(layout ).to receive(:extents).thrice.and_return([nil,extent])
+ expect(context).to receive(:update_pango_layout).once
+ expect(context).to receive(:show_pango_layout).once
+ expect(context).to receive(:restore).once
- card = Squib::Card.new(@deck, 100, 150)
- # text(str, font, font_size, color,
- # x, y, width, height,
- # markup, justify, wrap, ellipsize,
- # spacing, align, valign, hint, angle)
- ret = card.text('foo', 'Sans 12', nil, '#abc',
- 10, 15, 20, 25,
- nil, false, false, false,
- 1.0, :left, :top, nil, 0.0)
- expect(ret).to eq({width: 0, height: 0})
- end
+ card = Squib::Card.new(deck, 100, 150)
+ # text(str, font, font_size, color,
+ # x, y, width, height,
+ # markup, justify, wrap, ellipsize,
+ # spacing, align, valign, hint, angle)
+ ret = card.text('foo', 'Sans 12', nil, '#abc',
+ 10, 15, 20, 25,
+ nil, false, false, false,
+ 1.0, :left, :top, nil, 0.0)
+ expect(ret).to eq({width: 0, height: 0})
end
end
context 'convenience lookups' do
+ let(:deck) { double(Squib::Deck) }
+ let(:context) { double(Cairo::Context).as_null_object }
+ let(:layout) { double(Pango::Layout).as_null_object }
+ let(:extents) { double("extents") }
+
before(:each) do
- @deck = double(Squib::Deck)
- @context = double(Cairo::Context).as_null_object
- @layout = double(Pango::Layout).as_null_object
- @extents = double("extents")
- allow(Cairo::Context).to receive(:new).and_return(@context)
- expect(@context).to receive(:create_pango_layout).once.and_return(@layout)
+ allow(Cairo::Context).to receive(:new).and_return(context)
+ expect(context).to receive(:create_pango_layout).once.and_return(layout)
+ allow(deck).to receive(:dir).and_return('_output')
+ allow(deck).to receive(:count_format).and_return('%02d')
+ allow(deck).to receive(:prefix).and_return('card_')
+ allow(deck).to receive(:antialias).and_return('best')
end
it 'aligns right with strings' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:alignment=).with(Pango::Layout::ALIGN_RIGHT).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:alignment=).with(Pango::Layout::ALIGN_RIGHT).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, false, false,
1.0, 'right', :top, nil, 0.0)
end
it 'aligns center with strings' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:alignment=).with(Pango::Layout::ALIGN_CENTER).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:alignment=).with(Pango::Layout::ALIGN_CENTER).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, false, false,
1.0, 'center', :top, nil, 0.0)
end
it 'sets wrap to char with string char' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:wrap=).with(Pango::Layout::WRAP_CHAR).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:wrap=).with(Pango::Layout::WRAP_CHAR).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, 'char', false,
1.0, :left, :top, nil, 0.0)
end
it 'sets wrap to word with word string' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:wrap=).with(Pango::Layout::WRAP_WORD).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:wrap=).with(Pango::Layout::WRAP_WORD).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, 'word', false,
1.0, :left, :top, nil, 0.0)
end
it 'sets wrap to word_char with symbol word_char' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:wrap=).with(Pango::Layout::WRAP_WORD_CHAR).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:wrap=).with(Pango::Layout::WRAP_WORD_CHAR).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, :word_char, false,
1.0, :left, :top, nil, 0.0)
end
it 'sets wrap to word_char with true' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:wrap=).with(Pango::Layout::WRAP_WORD_CHAR).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:wrap=).with(Pango::Layout::WRAP_WORD_CHAR).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, true, false,
1.0, :left, :top, nil, 0.0)
end
it 'sets ellipsize to start properly' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:ellipsize=).with(Pango::Layout::ELLIPSIZE_START).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:ellipsize=).with(Pango::Layout::ELLIPSIZE_START).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, true, :start,
1.0, :left, :top, nil, 0.0)
end
it 'sets ellipsize to middle properly' do
- card = Squib::Card.new(@deck, 100, 150)
- expect(@layout).to receive(:ellipsize=).with(Pango::Layout::ELLIPSIZE_MIDDLE).once
+ card = Squib::Card.new(deck, 100, 150)
+ expect(layout).to receive(:ellipsize=).with(Pango::Layout::ELLIPSIZE_MIDDLE).once
card.text('foo', 'Sans 12', nil, '#abc',
10, 15, 20, 50,
nil, false, true, 'middle',
1.0, :left, :top, nil, 0.0)
end