spec/graphics/graphics_images_spec.rb in squib-0.6.0 vs spec/graphics/graphics_images_spec.rb in squib-0.7.0

- old
+ new

@@ -1,85 +1,94 @@ -require 'spec_helper' -require 'squib' - -describe Squib::Card do - - let(:deck) { double(Squib::Deck) } - let(:context) { double(Cairo::Context) } - let(:svg) { double(RSVG::Handle) } - let(:png) { double(Cairo::ImageSurface) } - - before(:each) do - allow(Cairo::Context).to receive(:new).and_return(context) - allow(Cairo::ImageSurface).to receive(:from_png).and_return(png) - allow(Cairo::ImageSurface).to receive(:new).and_return(png) - allow(RSVG::Handle).to receive(:new_from_data).and_return(svg) - 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 '#png' do - it 'makes all the expected calls on a smoke test' do - expect(context).to receive(:antialias=).with('subpixel') - expect(context).to receive(:save).once - expect(context).to receive(:translate).with(-37, -38).once - expect(context).to receive(:rotate).with(0.0).once - expect(context).to receive(:translate).with(37, 38).once - expect(context).to receive(:set_source).with(png, 37, 38).once - expect(context).to receive(:paint).with(0.9).once - expect(context).to receive(:restore).once - - card = Squib::Card.new(deck, 100, 150) - # png(file, x, y, alpha, blend, angle) - card.png('foo.png', 37, 38, :native, :native, 0.9, :none, 0.0, nil) - end - - it 'sets blend when needed' do - context.as_null_object - expect(context).to receive(:operator=).with(:overlay).once - - card = Squib::Card.new(deck, 100, 150) - card.png('foo.png', 37, 38, :native, :native, 0.9, :overlay, 0.0, nil) - end - end - - context '#svg' do - it 'makes all the expected calls on a smoke test' do - expect(svg).to receive(:width).and_return(100).twice - expect(svg).to receive(:height).and_return(100).twice - expect(context).to receive(:antialias=).with('subpixel').once - expect(context).to receive(:save).once - expect(context).to receive(:rotate).with(0.0).once - expect(context).to receive(:translate).with(37, 38).once - expect(context).to receive(:scale).with(1.0, 1.0).once - expect(context).to receive(:render_rsvg_handle).with(svg, 'id').once - expect(context).to receive(:restore).once - - card = Squib::Card.new(deck, 100, 150) - # svg(file, data, id, x, y, width, height, alpha, blend, angle) - card.svg(nil, '<svg></svg>', 'id', 37, 38, :native, :native, 0.9, :none, 0.0, nil) - end - - it 'sets blend when needed' do - context.as_null_object - svg.as_null_object - expect(context).to receive(:operator=).with(:overlay).once - - card = Squib::Card.new(deck, 100, 150) - card.svg(nil, '<svg></svg>', nil, 37, 38, :native, :native, 0.9, :overlay, 0.0, nil) - end - - it 'sets width & height when needed' do - context.as_null_object - expect(svg).to receive(:width).and_return(100).once - expect(svg).to receive(:height).and_return(100).once - expect(context).to receive(:scale).with(2.0, 3.0).once - - card = Squib::Card.new(deck, 100, 150) - card.svg(nil, '<svg></svg>', nil, 37, 38, 200, 300, 0.9, :none, 0.0, nil) - end - end - -end +require 'spec_helper' +require 'squib' +require 'ostruct' + +describe Squib::Card do + + let(:deck) { double(Squib::Deck) } + let(:context) { double(Cairo::Context) } + let(:svg) { double(RSVG::Handle) } + let(:png) { double(Cairo::ImageSurface) } + let(:box) { OpenStruct.new({x: 37, y: 38, width: :native, height: :native})} + let(:paint) { OpenStruct.new({alpha: 0.9, blend: :none, mask: '' })} + let(:trans) { OpenStruct.new({angle: 0.0})} + + before(:each) do + allow(Cairo::Context).to receive(:new).and_return(context) + allow(Cairo::ImageSurface).to receive(:from_png).and_return(png) + allow(Cairo::ImageSurface).to receive(:new).and_return(png) + allow(RSVG::Handle).to receive(:new_from_data).and_return(svg) + 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 '#png' do + it 'makes all the expected calls on a smoke test' do + expect(context).to receive(:antialias=).with('subpixel') + expect(context).to receive(:save).once + expect(context).to receive(:translate).with(-37, -38).once + expect(context).to receive(:rotate).with(0.0).once + expect(context).to receive(:translate).with(37, 38).once + expect(context).to receive(:set_source).with(png, 37, 38).once + expect(context).to receive(:paint).with(0.9).once + expect(context).to receive(:restore).once + + card = Squib::Card.new(deck, 100, 150) + # png(file, x, y, alpha, blend, angle) + card.png('foo.png', box, paint, trans) + end + + it 'sets blend when needed' do + context.as_null_object + expect(context).to receive(:operator=).with(:overlay).once + + card = Squib::Card.new(deck, 100, 150) + paint.blend = :overlay + card.png('foo.png', box, paint, trans) + end + end + + context '#svg' do + let(:svg_args) { OpenStruct.new({data: '<svg></svg>', id: 'id'}) } + + it 'makes all the expected calls on a smoke test' do + expect(svg).to receive(:width).and_return(100).twice + expect(svg).to receive(:height).and_return(100).twice + expect(context).to receive(:antialias=).with('subpixel').once + expect(context).to receive(:save).once + expect(context).to receive(:rotate).with(0.0).once + expect(context).to receive(:translate).with(37, 38).once + expect(context).to receive(:scale).with(1.0, 1.0).once + expect(context).to receive(:render_rsvg_handle).with(svg, 'id').once + expect(context).to receive(:restore).once + + card = Squib::Card.new(deck, 100, 150) + card.svg(nil, svg_args, box, paint, trans) + end + + it 'sets blend when needed' do + context.as_null_object + svg.as_null_object + expect(context).to receive(:operator=).with(:overlay).once + + card = Squib::Card.new(deck, 100, 150) + paint.blend = :overlay + card.svg(nil, svg_args, box, paint, trans) + end + + it 'sets width & height when needed' do + context.as_null_object + expect(svg).to receive(:width).and_return(100).once + expect(svg).to receive(:height).and_return(100).once + expect(context).to receive(:scale).with(2.0, 3.0).once + + card = Squib::Card.new(deck, 100, 150) + box.width = 200 + box.height = 300 + card.svg(nil, svg_args, box, paint, trans) + end + end + +end