You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

85 lines
3.0 KiB

require 'spec_helper'
require 'squib'
describe Squib::Card do
let(:deck) { double(Squib::Deck) }
let(:cxt) { double(Cairo::Context) }
def expect_stroke(cxt, fill_color, stroke_color, stroke_width)
expect(cxt).to receive(:set_source_color).with(fill_color).once
expect(cxt).to receive(:fill_preserve).once
expect(cxt).to receive(:set_source_color).with(stroke_color).once
expect(cxt).to receive(:set_line_width).with(stroke_width).once
expect(cxt).to receive(:stroke).once
end
before(:each) do
allow(Cairo::Context).to receive(:new).and_return(cxt)
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('subpixel')
allow(deck).to receive(:backend).and_return('memory')
end
context 'rect' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:rounded_rectangle).with(37, 38, 50, 100, 10, 15).once
expect_stroke(cxt, '#fff', '#f00', 2.0)
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
# rect(x, y, width, height, x_radius, y_radius,
# fill_color, stroke_color, stroke_width)
card.rect(37, 38, 50, 100, 10, 15, '#fff', '#f00', 2.0)
end
end
context 'circle' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:move_to).with(137, 38)
expect(cxt).to receive(:circle).with(37, 38, 100).once
expect_stroke(cxt, '#fff', '#f00', 2.0)
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
# circle(x, y, radius,
# fill_color, stroke_color, stroke_width)
card.circle(37, 38, 100, '#fff', '#f00', 2.0)
end
end
context 'triangle' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:triangle).with(1, 2, 3, 4, 5, 6).once
expect_stroke(cxt, '#fff', '#f00', 2.0)
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
card.triangle(1, 2, 3, 4, 5, 6, '#fff', '#f00', 2.0)
end
end
context 'line' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:move_to).with(1, 2).once
expect(cxt).to receive(:line_to).with(3, 4).once
expect(cxt).to receive(:set_source_color).with('#fff').once
expect(cxt).to receive(:set_line_width).with(2.0).once
expect(cxt).to receive(:stroke).once
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
card.line(1, 2, 3, 4, '#fff', 2.0)
end
end
end