spec/input_helpers_spec.rb in squib-0.0.6 vs spec/input_helpers_spec.rb in squib-0.1.0

- old
+ new

@@ -2,11 +2,11 @@ require 'squib' require 'squib/input_helpers' class DummyDeck include Squib::InputHelpers - attr_accessor :layout, :cards, :custom_colors + attr_accessor :layout, :cards, :custom_colors, :width, :height, :dpi end describe Squib::InputHelpers do before(:each) do @@ -16,10 +16,13 @@ 'apples' => {x: 35}, 'oranges' => {y: 45}, } @deck.cards = %w(a b) @deck.custom_colors = {} + @deck.width = 100 + @deck.height = 200 + @deck.dpi = 300 end context '#layoutify' do it 'warns on the logger when the layout does not exist' do mock_squib_logger(@old_logger) do @@ -130,9 +133,70 @@ it 'computes a counter-clockwise rotate properly' do opts = @deck.send(:rotateify, {rotate: :counterclockwise}) expect(opts).to eq({ :angle => 1.5 * Math::PI, :rotate => :counterclockwise }) + end + end + + context '#convert_units' do + it 'does not touch arrays integers' do + args = {x: [156]} + needed_params = [:x] + opts = @deck.send(:convert_units, args, needed_params) + expect(opts).to eq({ :x => [156] }) + end + + it 'does not touch arrays floats' do + args = {x: [156.2]} + needed_params = [:x] + opts = @deck.send(:convert_units, args, needed_params) + expect(opts).to eq({ :x => [156.2] }) + end + + it 'converts array of all inches' do + args = {x: ['1in', '2in']} + needed_params = [:x] + opts = @deck.send(:convert_units, args, needed_params) + expect(opts).to eq({:x => [300.0, 600.0] }) #assume 300dpi default + end + + it 'converts array of some inches' do + args = {x: [156, '2in']} + needed_params = [:x] + opts = @deck.send(:convert_units, args, needed_params) + expect(opts).to eq({:x => [156.0, 600.0]}) #assume 300dpi default + end + + it 'handles whitespace' do + args = {x: ['1in ']} + needed_params = [:x] + opts = @deck.send(:convert_units, args, needed_params) + expect(opts).to eq({:x => [300.0] }) #assume 300dpi default + end + + it 'converts centimeters' do + args = {x: ['2cm']} + needed_params = [:x] + opts = @deck.send(:convert_units, args, needed_params) + expect(opts).to eq({:x => [236.2204722] }) #assume 300dpi default + end + + end + + context '#rowify' do + it 'does nothing on an integer' do + opts = @deck.send(:rowify, {columns: 2, rows: 2}) + expect(opts).to eq({ columns: 2, + rows: 2 + }) + end + + it 'computes properly on non-integer' do + opts = @deck.send(:rowify, {columns: 1, rows: :infinite}) + expect(opts).to eq({ columns: 1, + rows: 2 + }) end end end