squib 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +14 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.md +201 -175
  5. data/Gemfile +2 -4
  6. data/README.md +650 -645
  7. data/RELEASE TODO.md +18 -18
  8. data/Rakefile +106 -99
  9. data/appveyor.yml +29 -0
  10. data/lib/squib.rb +32 -32
  11. data/lib/squib/api/background.rb +20 -20
  12. data/lib/squib/api/data.rb +131 -131
  13. data/lib/squib/api/image.rb +108 -90
  14. data/lib/squib/api/save.rb +151 -149
  15. data/lib/squib/api/settings.rb +35 -35
  16. data/lib/squib/api/shapes.rb +255 -230
  17. data/lib/squib/api/text.rb +65 -65
  18. data/lib/squib/api/text_embed.rb +96 -96
  19. data/lib/squib/args/arg_loader.rb +138 -138
  20. data/lib/squib/args/box.rb +54 -54
  21. data/lib/squib/args/card_range.rb +32 -32
  22. data/lib/squib/args/color_validator.rb +11 -11
  23. data/lib/squib/args/coords.rb +32 -32
  24. data/lib/squib/args/dir_validator.rb +16 -16
  25. data/lib/squib/args/draw.rb +92 -92
  26. data/lib/squib/args/embed_adjust.rb +25 -25
  27. data/lib/squib/args/embed_key.rb +17 -17
  28. data/lib/squib/args/hand_special.rb +37 -37
  29. data/lib/squib/args/import.rb +39 -39
  30. data/lib/squib/args/input_file.rb +37 -37
  31. data/lib/squib/args/paint.rb +43 -43
  32. data/lib/squib/args/paragraph.rb +116 -115
  33. data/lib/squib/args/save_batch.rb +63 -60
  34. data/lib/squib/args/scale_box.rb +53 -53
  35. data/lib/squib/args/sheet.rb +72 -72
  36. data/lib/squib/args/showcase_special.rb +38 -38
  37. data/lib/squib/args/svg_special.rb +37 -37
  38. data/lib/squib/args/transform.rb +60 -24
  39. data/lib/squib/args/typographer.rb +117 -117
  40. data/lib/squib/card.rb +66 -67
  41. data/lib/squib/conf.rb +131 -117
  42. data/lib/squib/constants.rb +12 -178
  43. data/lib/squib/deck.rb +113 -113
  44. data/lib/squib/graphics/cairo_context_wrapper.rb +113 -99
  45. data/lib/squib/graphics/gradient_regex.rb +46 -46
  46. data/lib/squib/graphics/hand.rb +42 -42
  47. data/lib/squib/graphics/image.rb +103 -76
  48. data/lib/squib/graphics/save_doc.rb +103 -103
  49. data/lib/squib/graphics/save_images.rb +39 -33
  50. data/lib/squib/graphics/shapes.rb +135 -119
  51. data/lib/squib/graphics/showcase.rb +85 -85
  52. data/lib/squib/graphics/text.rb +176 -176
  53. data/lib/squib/layout_parser.rb +91 -91
  54. data/lib/squib/layouts/economy.yml +85 -85
  55. data/lib/squib/layouts/fantasy.yml +101 -101
  56. data/lib/squib/layouts/hand.yml +62 -62
  57. data/lib/squib/layouts/playing-card.yml +35 -35
  58. data/lib/squib/layouts/tuck_box.yml +45 -45
  59. data/lib/squib/project_template/IDEAS.md +22 -0
  60. data/lib/squib/project_template/PLAYTESTING.md +26 -0
  61. data/lib/squib/project_template/RULES.md +21 -0
  62. data/lib/squib/project_template/config.yml +49 -45
  63. data/lib/squib/sample_helpers.rb +34 -0
  64. data/lib/squib/version.rb +10 -10
  65. data/samples/autoscale_font/_autoscale_font.rb +29 -0
  66. data/samples/color_shortcuts.rb +6 -6
  67. data/samples/csv_import.rb +26 -26
  68. data/samples/custom-config.yml +5 -5
  69. data/samples/custom_config.rb +18 -18
  70. data/samples/draw_shapes.rb +48 -45
  71. data/samples/embed_text.rb +88 -88
  72. data/samples/excel.rb +55 -55
  73. data/samples/hand.rb +24 -24
  74. data/samples/images/_images.rb +104 -0
  75. data/samples/intro/01_hello.rb +9 -0
  76. data/samples/intro/02_options.rb +15 -0
  77. data/samples/intro/03_layout.rb +12 -0
  78. data/samples/intro/04_arrays.rb +16 -0
  79. data/samples/intro/05_excel.rb +15 -0
  80. data/samples/layouts.rb +62 -62
  81. data/samples/layouts_builtin.rb +51 -51
  82. data/samples/load_images.rb +99 -78
  83. data/samples/load_images_config.yml +1 -0
  84. data/samples/quantity_explosion.csv +2 -2
  85. data/samples/ranges.rb +64 -64
  86. data/samples/sample.csv +2 -2
  87. data/samples/saves.rb +9 -1
  88. data/samples/sprites.png +0 -0
  89. data/samples/text/_text.rb +46 -0
  90. data/samples/text_options.rb +102 -102
  91. data/spec/api/api_data_spec.rb +117 -117
  92. data/spec/api/api_settings_spec.rb +37 -37
  93. data/spec/args/box_spec.rb +127 -127
  94. data/spec/args/draw_spec.rb +101 -95
  95. data/spec/args/embed_key_spec.rb +13 -13
  96. data/spec/args/input_file_spec.rb +21 -21
  97. data/spec/args/paint_spec.rb +21 -21
  98. data/spec/args/paragraph_spec.rb +152 -152
  99. data/spec/args/range_spec.rb +40 -40
  100. data/spec/args/save_batch_spec.rb +51 -51
  101. data/spec/args/scale_box_spec.rb +71 -71
  102. data/spec/args/sheet_spec.rb +58 -58
  103. data/spec/args/showcase_special_spec.rb +15 -15
  104. data/spec/args/transform_spec.rb +25 -0
  105. data/spec/card_spec.rb +11 -0
  106. data/spec/conf_spec.rb +13 -3
  107. data/spec/data/conf/unrecognized.yml +4 -0
  108. data/spec/data/csv/qty.csv +2 -2
  109. data/spec/data/csv/qty_named.csv +2 -2
  110. data/spec/data/csv/with_spaces.csv +2 -2
  111. data/spec/data/samples/autoscale_font.rb.txt +84 -84
  112. data/spec/data/samples/basic.rb.txt +227 -209
  113. data/spec/data/samples/config_text_markup.rb.txt +72 -72
  114. data/spec/data/samples/csv_import.rb.txt +213 -213
  115. data/spec/data/samples/custom_config.rb.txt +57 -48
  116. data/spec/data/samples/draw_shapes.rb.txt +555 -3
  117. data/spec/data/samples/embed_text.rb.txt +283 -283
  118. data/spec/data/samples/excel.rb.txt +661 -661
  119. data/spec/data/samples/gradients.rb.txt +77 -79
  120. data/spec/data/samples/hand.rb.txt +538 -538
  121. data/spec/data/samples/hello_world.rb.txt +36 -36
  122. data/spec/data/samples/load_images.rb.txt +170 -0
  123. data/spec/data/samples/portrait-landscape.rb.txt +51 -49
  124. data/spec/data/samples/ranges.rb.txt +472 -460
  125. data/spec/data/samples/saves.rb.txt +810 -801
  126. data/spec/data/samples/showcase.rb.txt +5926 -5910
  127. data/spec/data/samples/text_options.rb.txt +1125 -1125
  128. data/spec/data/samples/tgc_proofs.rb.txt +95 -81
  129. data/spec/graphics/cairo_context_wrapper_spec.rb +104 -84
  130. data/spec/graphics/graphics_save_doc_spec.rb +67 -67
  131. data/spec/samples/diff-with-css.example.html +39 -0
  132. data/spec/samples/expected/load_images_00.png +0 -0
  133. data/spec/samples/expected/shape_00.png +0 -0
  134. data/spec/samples/run_samples_spec.rb +17 -0
  135. data/spec/samples/samples_regression_spec.rb +72 -82
  136. data/spec/spec_helper.rb +9 -1
  137. data/squib.gemspec +49 -48
  138. data/squib.sublime-project +42 -42
  139. metadata +94 -48
  140. data/spec/graphics/graphics_images_spec.rb +0 -94
@@ -1,127 +1,127 @@
1
- require 'spec_helper'
2
- require 'squib/args/box'
3
-
4
- describe Squib::Args::Box do
5
- subject(:box) { Squib::Args::Box.new }
6
- let(:expected_defaults) { {x: [0], y: [0], width: [:deck], height: [:deck] } }
7
-
8
- it 'intitially has no params set' do
9
- expect(box).not_to respond_to(:x, :y, :width, :height)
10
- end
11
-
12
- it 'extracts the defaults from Box on an empty hash' do
13
- box.load!({})
14
- expect(box).to have_attributes(expected_defaults)
15
- end
16
-
17
- it 'extracts what is specified and fills in defaults from Box' do
18
- box.load!(x: 4, width: 40)
19
- expect(box).to have_attributes(x: [4], width: [40], y: [0], height: [:deck])
20
- end
21
-
22
- it 'extracts the defaults from Box on an empty hash' do
23
- box.load!({foo: :bar})
24
- expect(box).to have_attributes(expected_defaults)
25
- expect(box).not_to respond_to(:foo)
26
- end
27
-
28
- context 'single expansion' do
29
- let(:args) { {x: [1, 2], y: 3} }
30
- before(:each) { box.load!(args, expand_by: 2) }
31
- it 'expands box' do
32
- expect(box).to have_attributes({
33
- x: [1, 2],
34
- y: [3, 3],
35
- height: [:deck, :deck],
36
- width: [:deck, :deck]
37
- })
38
- end
39
-
40
- it 'gives access to each card too' do
41
- expect(box[0]).to have_attributes({
42
- x: 1,
43
- y: 3,
44
- height: :deck,
45
- width: :deck
46
- })
47
- end
48
- end
49
-
50
- context 'layouts' do
51
- let(:layout) do
52
- { 'attack' => { 'x' => 50 },
53
- 'defend' => { 'x' => 60 } }
54
- end
55
-
56
- it 'are used when not specified' do
57
- args = { layout: ['attack', 'defend'] }
58
- box.load!(args, expand_by: 2, layout: layout)
59
- expect(box).to have_attributes(
60
- x: [50, 60], # set by layout
61
- y: [0, 0], # Box default
62
- )
63
- end
64
-
65
- it 'handle single expansion' do
66
- args = { layout: 'attack' }
67
- box.load!(args, expand_by: 2, layout: layout)
68
- expect(box).to have_attributes(
69
- x: [50, 50], # set by layout
70
- y: [0, 0], # Box default
71
- )
72
- end
73
-
74
- it 'handles symbols' do
75
- args = { layout: :attack }
76
- box.load!(args, expand_by: 2, layout: layout)
77
- expect(box).to have_attributes(
78
- x: [50, 50], # set by layout
79
- y: [0, 0], # Box default
80
- )
81
- end
82
-
83
- it 'warns on non-existent layouts' do
84
- args = { layout: :heal}
85
- expect(Squib.logger).to receive(:warn).with('Layout "heal" does not exist in layout file - using default instead').at_least(:once)
86
- box.load!(args, expand_by: 2, layout: layout)
87
- expect(box).to have_attributes(
88
- x: [0, 0], # Box default
89
- y: [0, 0], # Box default
90
- )
91
- end
92
- end
93
-
94
- context 'unit conversion' do
95
-
96
- it 'converts units on all args' do
97
- args = {x: ['1in', '2in'], y: 300, width: '1in', height: '1in'}
98
- box.load!(args, expand_by: 2)
99
- expect(box).to have_attributes(
100
- x: [300, 600],
101
- y: [300, 300],
102
- width: [300, 300],
103
- height: [300, 300],
104
- )
105
- end
106
-
107
- end
108
-
109
- context 'validation' do
110
- it 'replaces with deck width and height' do
111
- args = {width: :deck, height: :deck}
112
- deck = OpenStruct.new(width: 123, height: 456)
113
- box = Squib::Args::Box.new(deck)
114
- box.load!(args, expand_by: 1)
115
- expect(box).to have_attributes(width: [123], height: [456])
116
- end
117
-
118
- it 'has radius override x_radius and y_radius' do
119
- args = {x_radius: 1, y_radius: 2, radius: 3}
120
- box.load!(args, expand_by: 2)
121
- expect(box).to have_attributes(x_radius: [3, 3], y_radius: [3, 3])
122
- end
123
-
124
- end
125
-
126
-
127
- end
1
+ require 'spec_helper'
2
+ require 'squib/args/box'
3
+
4
+ describe Squib::Args::Box do
5
+ subject(:box) { Squib::Args::Box.new }
6
+ let(:expected_defaults) { {x: [0], y: [0], width: [:deck], height: [:deck] } }
7
+
8
+ it 'intitially has no params set' do
9
+ expect(box).not_to respond_to(:x, :y, :width, :height)
10
+ end
11
+
12
+ it 'extracts the defaults from Box on an empty hash' do
13
+ box.load!({})
14
+ expect(box).to have_attributes(expected_defaults)
15
+ end
16
+
17
+ it 'extracts what is specified and fills in defaults from Box' do
18
+ box.load!(x: 4, width: 40)
19
+ expect(box).to have_attributes(x: [4], width: [40], y: [0], height: [:deck])
20
+ end
21
+
22
+ it 'extracts the defaults from Box on an empty hash' do
23
+ box.load!({foo: :bar})
24
+ expect(box).to have_attributes(expected_defaults)
25
+ expect(box).not_to respond_to(:foo)
26
+ end
27
+
28
+ context 'single expansion' do
29
+ let(:args) { {x: [1, 2], y: 3} }
30
+ before(:each) { box.load!(args, expand_by: 2) }
31
+ it 'expands box' do
32
+ expect(box).to have_attributes({
33
+ x: [1, 2],
34
+ y: [3, 3],
35
+ height: [:deck, :deck],
36
+ width: [:deck, :deck]
37
+ })
38
+ end
39
+
40
+ it 'gives access to each card too' do
41
+ expect(box[0]).to have_attributes({
42
+ x: 1,
43
+ y: 3,
44
+ height: :deck,
45
+ width: :deck
46
+ })
47
+ end
48
+ end
49
+
50
+ context 'layouts' do
51
+ let(:layout) do
52
+ { 'attack' => { 'x' => 50 },
53
+ 'defend' => { 'x' => 60 } }
54
+ end
55
+
56
+ it 'are used when not specified' do
57
+ args = { layout: ['attack', 'defend'] }
58
+ box.load!(args, expand_by: 2, layout: layout)
59
+ expect(box).to have_attributes(
60
+ x: [50, 60], # set by layout
61
+ y: [0, 0], # Box default
62
+ )
63
+ end
64
+
65
+ it 'handle single expansion' do
66
+ args = { layout: 'attack' }
67
+ box.load!(args, expand_by: 2, layout: layout)
68
+ expect(box).to have_attributes(
69
+ x: [50, 50], # set by layout
70
+ y: [0, 0], # Box default
71
+ )
72
+ end
73
+
74
+ it 'handles symbols' do
75
+ args = { layout: :attack }
76
+ box.load!(args, expand_by: 2, layout: layout)
77
+ expect(box).to have_attributes(
78
+ x: [50, 50], # set by layout
79
+ y: [0, 0], # Box default
80
+ )
81
+ end
82
+
83
+ it 'warns on non-existent layouts' do
84
+ args = { layout: :heal}
85
+ expect(Squib.logger).to receive(:warn).with('Layout "heal" does not exist in layout file - using default instead').at_least(:once)
86
+ box.load!(args, expand_by: 2, layout: layout)
87
+ expect(box).to have_attributes(
88
+ x: [0, 0], # Box default
89
+ y: [0, 0], # Box default
90
+ )
91
+ end
92
+ end
93
+
94
+ context 'unit conversion' do
95
+
96
+ it 'converts units on all args' do
97
+ args = {x: ['1in', '2in'], y: 300, width: '1in', height: '1in'}
98
+ box.load!(args, expand_by: 2)
99
+ expect(box).to have_attributes(
100
+ x: [300, 600],
101
+ y: [300, 300],
102
+ width: [300, 300],
103
+ height: [300, 300],
104
+ )
105
+ end
106
+
107
+ end
108
+
109
+ context 'validation' do
110
+ it 'replaces with deck width and height' do
111
+ args = {width: :deck, height: :deck}
112
+ deck = OpenStruct.new(width: 123, height: 456)
113
+ box = Squib::Args::Box.new(deck)
114
+ box.load!(args, expand_by: 1)
115
+ expect(box).to have_attributes(width: [123], height: [456])
116
+ end
117
+
118
+ it 'has radius override x_radius and y_radius' do
119
+ args = {x_radius: 1, y_radius: 2, radius: 3}
120
+ box.load!(args, expand_by: 2)
121
+ expect(box).to have_attributes(x_radius: [3, 3], y_radius: [3, 3])
122
+ end
123
+
124
+ end
125
+
126
+
127
+ end
@@ -1,95 +1,101 @@
1
- require 'spec_helper'
2
- require 'squib/args/draw'
3
-
4
- describe Squib::Args::Draw do
5
- let(:custom_colors) { {'foo' => 'abc'} }
6
- subject(:draw) {Squib::Args::Draw.new(custom_colors)}
7
-
8
- context 'unit conversion' do
9
-
10
- it 'converts units on stroke width' do
11
- args = {stroke_width: '2in'}
12
- draw.load!(args, expand_by: 2)
13
- expect(draw).to have_attributes(stroke_width: [600, 600])
14
- end
15
-
16
- end
17
-
18
- context 'dsl overrides' do
19
- subject(:draw) {Squib::Args::Draw.new(custom_colors, {stroke_width: 0.0})}
20
-
21
- it 'works when specified' do
22
- draw.load!({}) # go right to defaults
23
- expect(draw.stroke_width).to eq( [0.0] ) #ordinarily a non-zero according
24
- end
25
-
26
- end
27
-
28
- context 'validation' do
29
-
30
- it 'converts to Cairo options' do
31
- args = {join: 'bevel', cap: 'round'}
32
- draw.load!(args)
33
- expect(draw).to have_attributes(
34
- join: [Cairo::LINE_JOIN_BEVEL],
35
- cap: [Cairo::LINE_JOIN_ROUND]
36
- )
37
- end
38
-
39
- it 'parses dash options' do
40
- args = {dash: '3 4 5'}
41
- draw.load!(args)
42
- expect(draw).to have_attributes(dash: [[3, 4, 5]])
43
- end
44
-
45
- it 'parses more complex dash options' do
46
- args = {dash: '30.5, 90, 5'}
47
- draw.load!(args)
48
- expect(draw).to have_attributes(dash: [[30.5, 90, 5]])
49
- end
50
-
51
- it 'does unit conversion on dash options' do
52
- args = {dash: '3in 4in 5in'}
53
- draw.load!(args)
54
- expect(draw).to have_attributes(dash: [[900, 1200, 1500]])
55
- end
56
-
57
- it 'converts line caps to Cairo constants' do
58
- args = {cap: :SQUARE}
59
- draw.load! args
60
- expect(draw).to have_attributes( cap: [Cairo::LINE_CAP_SQUARE] )
61
- end
62
-
63
- it 'allows fill_first stroke_strategy' do
64
- args = {stroke_strategy: :FILL_first}
65
- draw.load! args
66
- expect(draw).to have_attributes( stroke_strategy: [:fill_first] )
67
- end
68
-
69
- it 'allows stroke_first stroke_strategy' do
70
- args = {stroke_strategy: ' stroke_FIRST '}
71
- draw.load! args
72
- expect(draw).to have_attributes( stroke_strategy: [:stroke_first] )
73
- end
74
-
75
- it 'disallows anything not stroke_first and fill_first' do
76
- args = {stroke_strategy: 'foo'}
77
- expect { draw.load! args }.to raise_error("Only 'stroke_first' or 'fill_first' allowed")
78
- end
79
-
80
- context 'custom colors' do
81
-
82
- it 'looks up custom colors in the config' do
83
- draw.load!({color: 'foo'})
84
- expect(draw.color).to eq ['abc']
85
- end
86
-
87
- it 'passes on through for non-custom color' do
88
- draw = Squib::Args::Draw.new(custom_colors)
89
- draw.load!({color: 'bar'})
90
- expect(draw.color).to eq ['bar']
91
- end
92
-
93
- end
94
- end
95
- end
1
+ require 'spec_helper'
2
+ require 'squib/args/draw'
3
+
4
+ describe Squib::Args::Draw do
5
+ let(:custom_colors) { {'foo' => 'abc'} }
6
+ subject(:draw) {Squib::Args::Draw.new(custom_colors)}
7
+
8
+ context 'unit conversion' do
9
+
10
+ it 'converts units on stroke width' do
11
+ args = {stroke_width: '2in'}
12
+ draw.load!(args, expand_by: 2)
13
+ expect(draw).to have_attributes(stroke_width: [600, 600])
14
+ end
15
+
16
+ end
17
+
18
+ context 'dsl overrides' do
19
+ subject(:draw) {Squib::Args::Draw.new(custom_colors, {stroke_width: 0.0})}
20
+
21
+ it 'works when specified' do
22
+ draw.load!({}) # go right to defaults
23
+ expect(draw.stroke_width).to eq( [0.0] ) #ordinarily a non-zero according
24
+ end
25
+
26
+ end
27
+
28
+ context 'validation' do
29
+
30
+ it 'converts to Cairo options' do
31
+ args = {join: 'bevel', cap: 'round'}
32
+ draw.load!(args)
33
+ expect(draw).to have_attributes(
34
+ join: [Cairo::LINE_JOIN_BEVEL],
35
+ cap: [Cairo::LINE_JOIN_ROUND]
36
+ )
37
+ end
38
+
39
+ it 'parses dash options' do
40
+ args = {dash: '3 4 5'}
41
+ draw.load!(args)
42
+ expect(draw).to have_attributes(dash: [[3, 4, 5]])
43
+ end
44
+
45
+ it 'parses more complex dash options' do
46
+ args = {dash: '30.5, 90, 5'}
47
+ draw.load!(args)
48
+ expect(draw).to have_attributes(dash: [[30.5, 90, 5]])
49
+ end
50
+
51
+ it 'does unit conversion on dash options' do
52
+ args = {dash: '3in 4in 5in'}
53
+ draw.load!(args)
54
+ expect(draw).to have_attributes(dash: [[900, 1200, 1500]])
55
+ end
56
+
57
+ it 'converts line caps to Cairo constants' do
58
+ args = {cap: :SQUARE}
59
+ draw.load! args
60
+ expect(draw).to have_attributes( cap: [Cairo::LINE_CAP_SQUARE] )
61
+ end
62
+
63
+ it 'converts line join' do
64
+ args = {join: 'round'}
65
+ draw.load! args
66
+ expect(draw).to have_attributes( join: [Cairo::LINE_JOIN_ROUND] )
67
+ end
68
+
69
+ it 'allows fill_first stroke_strategy' do
70
+ args = {stroke_strategy: :FILL_first}
71
+ draw.load! args
72
+ expect(draw).to have_attributes( stroke_strategy: [:fill_first] )
73
+ end
74
+
75
+ it 'allows stroke_first stroke_strategy' do
76
+ args = {stroke_strategy: ' stroke_FIRST '}
77
+ draw.load! args
78
+ expect(draw).to have_attributes( stroke_strategy: [:stroke_first] )
79
+ end
80
+
81
+ it 'disallows anything not stroke_first and fill_first' do
82
+ args = {stroke_strategy: 'foo'}
83
+ expect { draw.load! args }.to raise_error("Only 'stroke_first' or 'fill_first' allowed")
84
+ end
85
+
86
+ context 'custom colors' do
87
+
88
+ it 'looks up custom colors in the config' do
89
+ draw.load!({color: 'foo'})
90
+ expect(draw.color).to eq ['abc']
91
+ end
92
+
93
+ it 'passes on through for non-custom color' do
94
+ draw = Squib::Args::Draw.new(custom_colors)
95
+ draw.load!({color: 'bar'})
96
+ expect(draw.color).to eq ['bar']
97
+ end
98
+
99
+ end
100
+ end
101
+ end
@@ -1,13 +1,13 @@
1
- require 'spec_helper'
2
- require 'squib/args/embed_key'
3
-
4
- describe Squib::Args::EmbedKey do
5
-
6
- context '#validate_key' do
7
-
8
- it 'converts to string' do
9
- expect(subject.validate_key(2.5)).to eq ('2.5')
10
- end
11
-
12
- end
13
- end
1
+ require 'spec_helper'
2
+ require 'squib/args/embed_key'
3
+
4
+ describe Squib::Args::EmbedKey do
5
+
6
+ context '#validate_key' do
7
+
8
+ it 'converts to string' do
9
+ expect(subject.validate_key(2.5)).to eq ('2.5')
10
+ end
11
+
12
+ end
13
+ end