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