osheet 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/.bundle/config +2 -0
  2. data/.gitignore +6 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +33 -0
  5. data/README.rdoc +103 -61
  6. data/Rakefile +5 -56
  7. data/examples/basic.rb +73 -0
  8. data/examples/formats.rb +366 -0
  9. data/examples/trivial.rb +21 -0
  10. data/lib/osheet/associations.rb +62 -0
  11. data/lib/osheet/cell.rb +44 -10
  12. data/lib/osheet/column.rb +34 -7
  13. data/lib/osheet/format/accounting.rb +21 -0
  14. data/lib/osheet/format/currency.rb +23 -0
  15. data/lib/osheet/format/custom.rb +13 -0
  16. data/lib/osheet/format/datetime.rb +13 -0
  17. data/lib/osheet/format/fraction.rb +33 -0
  18. data/lib/osheet/format/general.rb +9 -0
  19. data/lib/osheet/format/number.rb +13 -0
  20. data/lib/osheet/format/numeric.rb +113 -0
  21. data/lib/osheet/format/percentage.rb +25 -0
  22. data/lib/osheet/format/scientific.rb +25 -0
  23. data/lib/osheet/format/special.rb +28 -0
  24. data/lib/osheet/format/text.rb +11 -0
  25. data/lib/osheet/format.rb +30 -0
  26. data/lib/osheet/row.rb +32 -7
  27. data/lib/osheet/style.rb +65 -0
  28. data/lib/osheet/style_set.rb +39 -0
  29. data/lib/osheet/styled_element.rb +18 -0
  30. data/lib/osheet/template.rb +32 -0
  31. data/lib/osheet/template_set.rb +57 -0
  32. data/lib/osheet/version.rb +1 -11
  33. data/lib/osheet/workbook.rb +32 -16
  34. data/lib/osheet/workbook_element.rb +21 -0
  35. data/lib/osheet/worksheet.rb +18 -20
  36. data/lib/osheet/worksheet_element.rb +15 -0
  37. data/lib/osheet/xmlss_writer/base.rb +42 -0
  38. data/lib/osheet/xmlss_writer/elements.rb +68 -0
  39. data/lib/osheet/xmlss_writer/styles.rb +176 -0
  40. data/lib/osheet/xmlss_writer.rb +1 -0
  41. data/lib/osheet.rb +7 -27
  42. data/osheet.gemspec +26 -0
  43. data/test/cell_test.rb +83 -0
  44. data/test/column_test.rb +81 -0
  45. data/test/env.rb +9 -0
  46. data/test/format/accounting_test.rb +158 -0
  47. data/test/format/currency_test.rb +158 -0
  48. data/test/format/custom_test.rb +22 -0
  49. data/test/format/datetime_test.rb +22 -0
  50. data/test/format/fraction_test.rb +84 -0
  51. data/test/format/general_test.rb +21 -0
  52. data/test/format/number_test.rb +93 -0
  53. data/test/format/percentage_test.rb +116 -0
  54. data/test/format/scientific_test.rb +116 -0
  55. data/test/format/special_test.rb +51 -0
  56. data/test/format/text_test.rb +18 -0
  57. data/test/format_test.rb +35 -0
  58. data/test/helper.rb +101 -0
  59. data/test/osheet_test.rb +14 -0
  60. data/test/row_test.rb +78 -0
  61. data/test/style_set_test.rb +50 -0
  62. data/test/style_test.rb +92 -0
  63. data/test/template_set_test.rb +76 -0
  64. data/test/template_test.rb +63 -0
  65. data/test/workbook_test.rb +142 -0
  66. data/test/worksheet_test.rb +77 -0
  67. data/test/xmlss_writer/base_test.rb +92 -0
  68. data/test/xmlss_writer/elements_test.rb +168 -0
  69. data/test/xmlss_writer/styles_test.rb +253 -0
  70. metadata +141 -30
  71. data/lib/osheet/base.rb +0 -95
@@ -0,0 +1,77 @@
1
+ require "test/helper"
2
+ require 'osheet/worksheet'
3
+
4
+ module Osheet
5
+ class WorksheetTest < Test::Unit::TestCase
6
+
7
+ context "Osheet::Worksheet" do
8
+ subject { Worksheet.new }
9
+
10
+ should_be_a_workbook_element(Worksheet)
11
+
12
+ should_have_instance_methods :name, :attributes
13
+
14
+ should "set it's defaults" do
15
+ assert_equal nil, subject.send(:instance_variable_get, "@name")
16
+ assert_equal [], subject.columns
17
+ assert_equal [], subject.rows
18
+ end
19
+
20
+ should_hm(Worksheet, :columns, Column)
21
+ should_hm(Worksheet, :rows, Row)
22
+
23
+ context "that has some columns and rows" do
24
+ subject do
25
+ Worksheet.new do
26
+ name "Poo!"
27
+
28
+ column
29
+
30
+ row do
31
+ cell do
32
+ format :number
33
+ data 1
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ should "set it's name" do
40
+ assert_equal "Poo!", subject.send(:instance_variable_get, "@name")
41
+ end
42
+
43
+ should "know it's name" do
44
+ subject.name(false)
45
+ assert_equal false, subject.name
46
+ subject.name('la')
47
+ assert_equal 'la', subject.name
48
+ subject.name(nil)
49
+ assert_equal 'la', subject.name
50
+ end
51
+
52
+ should "know it's attribute(s)" do
53
+ [:name].each do |a|
54
+ assert subject.attributes.has_key?(a)
55
+ end
56
+ assert_equal "Poo!", subject.attributes[:name]
57
+ end
58
+ should "set it's columns" do
59
+ columns = subject.columns
60
+ assert_equal 1, columns.size
61
+ assert_kind_of Column, columns.first
62
+ assert_equal subject.columns, columns.first.columns
63
+ end
64
+
65
+ should "set it's rows" do
66
+ rows = subject.rows
67
+ assert_equal 1, rows.size
68
+ assert_kind_of Row, rows.first
69
+ assert_equal subject.columns, rows.first.columns
70
+ assert_equal subject.columns, rows.first.cells.first.columns
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,92 @@
1
+ require "test/helper"
2
+ require 'osheet/xmlss_writer'
3
+
4
+ module Osheet
5
+
6
+ class XmlssWriter::BaseTest < Test::Unit::TestCase
7
+ context "XmlssWriter::Base" do
8
+ subject { XmlssWriter::Base.new }
9
+
10
+ should_have_readers :workbook, :styles
11
+ should_have_writer :workbook
12
+
13
+ end
14
+ end
15
+
16
+ class XmlssWriter::Workbook < Test::Unit::TestCase
17
+ context "XmlssWriter workbook" do
18
+ subject { XmlssWriter::Base.new }
19
+ before do
20
+ @workbook = Workbook.new {
21
+ title "xmlss"
22
+ worksheet { name "testsheet1" }
23
+ }
24
+ end
25
+
26
+ should "allow writing an Osheet::Workbook" do
27
+ assert_nothing_raised do
28
+ subject.workbook = @workbook
29
+ end
30
+ assert_raises ArgumentError do
31
+ subject.workbook = "poo"
32
+ end
33
+ end
34
+
35
+ should "create an Xmlss workbook" do
36
+ assert_nothing_raised do
37
+ subject.workbook = @workbook
38
+ end
39
+ assert_kind_of ::Xmlss::Workbook, subject.workbook
40
+ assert_equal @workbook.worksheets.size, subject.workbook.worksheets.size
41
+ end
42
+ end
43
+ end
44
+
45
+ class XmlssWriter::ToData < Test::Unit::TestCase
46
+ context "XmlssWriter::Base" do
47
+ subject do
48
+ XmlssWriter::Base.new({
49
+ :workbook => Workbook.new {
50
+ title "written"
51
+ worksheet {
52
+ name "Poo!"
53
+ column
54
+ row {
55
+ cell {
56
+ data 1
57
+ format :number
58
+ }
59
+ }
60
+ }
61
+ }
62
+ })
63
+ end
64
+ after do
65
+ # remove any test files this creates
66
+ end
67
+
68
+ should_have_instance_methods :to_data, :to_file
69
+
70
+ should "return string xml data" do
71
+ xml_data = nil
72
+ assert_nothing_raised do
73
+ xml_data = subject.to_data
74
+ end
75
+ assert_kind_of ::String, xml_data
76
+ assert_match /^<\?xml/, xml_data
77
+ end
78
+
79
+ should "write xml data to a file path" do
80
+ path = nil
81
+ assert_nothing_raised do
82
+ path = subject.to_file("./tmp/base_test.xls")
83
+ end
84
+ assert_kind_of ::String, path
85
+ assert_equal './tmp/base_test.xls', path
86
+ assert File.exists?(path)
87
+ end
88
+
89
+ end
90
+ end
91
+
92
+ end
@@ -0,0 +1,168 @@
1
+ require "test/helper"
2
+ require 'osheet/xmlss_writer'
3
+
4
+ module Osheet
5
+
6
+ class XmlssWriter::WorksheetTest < Test::Unit::TestCase
7
+ context "when writing a worksheet" do
8
+ subject { XmlssWriter::Base.new }
9
+ before do
10
+ @worksheet = Worksheet.new {
11
+ name "testsheet2"
12
+ column { width 100 }
13
+ row { height 50 }
14
+ }
15
+ end
16
+
17
+ should "create an Xmlss worksheet" do
18
+ xmlss_worksheet = subject.send(:worksheet, @worksheet)
19
+ assert_kind_of ::Xmlss::Worksheet, xmlss_worksheet
20
+ assert_equal @worksheet.attributes[:name], xmlss_worksheet.name
21
+ assert_kind_of ::Xmlss::Table, xmlss_worksheet.table
22
+ assert_equal @worksheet.columns.size, xmlss_worksheet.table.columns.size
23
+ assert_equal @worksheet.rows.size, xmlss_worksheet.table.rows.size
24
+ end
25
+
26
+ should "filter invalid worksheet names" do
27
+ { 'valid name' => 'valid name',
28
+ 'valid 2' => 'valid 2',
29
+ 'invalid :' => 'invalid ',
30
+ 'invalid ;' => 'invalid ',
31
+ 'invalid *' => 'invalid ',
32
+ 'invalid /' => 'invalid ',
33
+ 'invalid \\' => 'invalid ',
34
+ '[invalid]' => "invalid]"
35
+ }.each do |k,v|
36
+ assert_equal v, subject.send(:worksheet, Worksheet.new { name k}).name
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ class XmlssWriter::ColumnTest < Test::Unit::TestCase
43
+ context "when writing a column" do
44
+ subject { XmlssWriter::Base.new }
45
+ before do
46
+ @column = Osheet::Column.new {
47
+ style_class "awesome"
48
+ width 100
49
+ autofit true
50
+ hidden true
51
+ meta({
52
+ :color => 'blue'
53
+ })
54
+ }
55
+ @xmlss_column = subject.send(:column, @column)
56
+ end
57
+
58
+ should "create an Xmlss column" do
59
+ assert_kind_of ::Xmlss::Column, @xmlss_column
60
+ assert_equal @column.attributes[:width], @xmlss_column.width
61
+ assert_equal @column.attributes[:autofit], @xmlss_column.auto_fit_width
62
+ assert_equal @column.attributes[:hidden], @xmlss_column.hidden
63
+ end
64
+
65
+ should "style an Xmlss column" do
66
+ assert_equal ".awesome", @xmlss_column.style_id
67
+ assert_equal 1, subject.styles.size
68
+ assert_kind_of ::Xmlss::Style::Base, subject.styles.first
69
+ assert_equal @xmlss_column.style_id, subject.styles.first.id
70
+ end
71
+ end
72
+ end
73
+
74
+ class XmlssWriter::RowTest < Test::Unit::TestCase
75
+ context "when writing a row" do
76
+ subject { XmlssWriter::Base.new }
77
+ before do
78
+ @row = Osheet::Row.new do
79
+ style_class "awesome thing"
80
+ height 100
81
+ autofit true
82
+ hidden true
83
+ cell {
84
+ data 'one hundred'
85
+ }
86
+ end
87
+ subject.workbook = Workbook.new {
88
+ style('.awesome') {
89
+ font 14
90
+ }
91
+ style('.thing') {
92
+ font :italic
93
+ }
94
+ style('.awesome.thing') {
95
+ font :bold
96
+ }
97
+ }
98
+ @xmlss_row = subject.send(:row, @row)
99
+ end
100
+
101
+ should "create an Xmlss row" do
102
+ assert_kind_of ::Xmlss::Row, @xmlss_row
103
+ assert_equal @row.attributes[:height], @xmlss_row.height
104
+ assert_equal @row.attributes[:autofit], @xmlss_row.auto_fit_height
105
+ assert_equal @row.attributes[:hidden], @xmlss_row.hidden
106
+ assert_equal 1, @xmlss_row.cells.size
107
+ end
108
+
109
+ should "style an Xmlss row" do
110
+ assert_equal ".awesome.thing", @xmlss_row.style_id
111
+ assert_equal 1, subject.styles.size
112
+ assert_kind_of ::Xmlss::Style::Base, subject.styles.first
113
+ assert_equal @xmlss_row.style_id, subject.styles.first.id
114
+ assert_equal 14, subject.styles.first.font.size
115
+ assert_equal true, subject.styles.first.font.bold?
116
+ assert_equal true, subject.styles.first.font.italic?
117
+ end
118
+ end
119
+ end
120
+
121
+ class XmlssWriter::CellTest < Test::Unit::TestCase
122
+ context "when writing a cell" do
123
+ subject { XmlssWriter::Base.new }
124
+ before do
125
+ @cell = Osheet::Cell.new do
126
+ style_class "awesome thing"
127
+ data 100
128
+ format :number
129
+ href 'http://example.com'
130
+ rowspan 2
131
+ colspan 5
132
+ end
133
+ subject.workbook = Workbook.new {
134
+ style('.awesome') {
135
+ font 14
136
+ }
137
+ style('.thing') {
138
+ font :italic
139
+ }
140
+ style('.awesome.thing') {
141
+ font :bold
142
+ }
143
+ }
144
+ @xmlss_cell = subject.send(:cell, @cell)
145
+ end
146
+
147
+ should "create an Xmlss cell with appropriate data" do
148
+ assert_kind_of ::Xmlss::Cell, @xmlss_cell
149
+ assert_kind_of ::Xmlss::Data, @xmlss_cell.data
150
+ assert_equal @cell.attributes[:data], @xmlss_cell.data.value
151
+ assert_equal ::Xmlss::Data.type(:number), @xmlss_cell.data.type
152
+ assert_equal 'http://example.com', @xmlss_cell.href
153
+ end
154
+
155
+ should "handle rowspan and colspan" do
156
+ assert_equal 1, @xmlss_cell.merge_down
157
+ assert_equal 4, @xmlss_cell.merge_across
158
+ end
159
+
160
+ should "style an Xmlss cell" do
161
+ assert_equal ".awesome.thing..number_none_0_nocomma_black", @xmlss_cell.style_id
162
+ assert_equal ".awesome.thing..number_none_0_nocomma_black", subject.styles.first.id
163
+ assert_equal '0', subject.styles.first.number_format.format
164
+ end
165
+ end
166
+ end
167
+
168
+ end
@@ -0,0 +1,253 @@
1
+ require "test/helper"
2
+ require 'osheet/xmlss_writer'
3
+
4
+ module Osheet
5
+
6
+ class XmlssWriter::Style < Test::Unit::TestCase
7
+ context("Xmlss style writer") do
8
+
9
+ subject { XmlssWriter::Base.new }
10
+ before do
11
+ subject.workbook = Workbook.new {
12
+ style('.font.size') { font 14 }
13
+ style('.font.weight') { font :bold }
14
+ style('.font.style') { font :italic }
15
+ }
16
+ end
17
+
18
+ should "key styles based off class str and format" do
19
+ assert_equal '', subject.send(:style_key, '', nil)
20
+ assert_equal '.awesome', subject.send(:style_key, 'awesome', nil)
21
+ assert_equal '.awesome.thing', subject.send(:style_key, 'awesome thing', nil)
22
+ assert_equal '.awesome..something', subject.send(:style_key, 'awesome', 'something')
23
+ assert_equal '..something', subject.send(:style_key, '', 'something')
24
+ end
25
+
26
+ should "not build a style obj when writing styles with no class str or format" do
27
+ assert_equal nil, subject.send(:style, '')
28
+ end
29
+
30
+ should "build a style obj and add it to the writers styles" do
31
+ xmlss_style = subject.send(:style, 'awesome')
32
+ assert_kind_of ::Xmlss::Style::Base, xmlss_style
33
+ assert_equal '.awesome', xmlss_style.id
34
+ assert_equal 1, subject.styles.size
35
+ assert_equal xmlss_style, subject.styles.first
36
+ end
37
+
38
+ should "build a style obj from many matching osheet styles" do
39
+ xmlss_style = subject.send(:style, 'font size weight style')
40
+ assert_equal 14, xmlss_style.font.size
41
+ assert_equal true, xmlss_style.font.bold?
42
+ assert_equal true, xmlss_style.font.italic?
43
+ end
44
+
45
+ should "provide style ids" do
46
+ assert_equal '', subject.send(:style_id, '')
47
+ assert_equal '.awesome', subject.send(:style_id, 'awesome')
48
+ assert_equal '..number_none_0_nocomma_black', subject.send(:style_id, '', Osheet::Format.new(:number))
49
+ assert_equal 2, subject.styles.size
50
+ end
51
+
52
+ end
53
+ end
54
+
55
+ class XmlssWriter::Alignment < Test::Unit::TestCase
56
+ context("Alignment style writer") do
57
+
58
+ subject { XmlssWriter::Base.new }
59
+ before do
60
+ subject.workbook = Workbook.new {
61
+ [
62
+ :left, :center, :right,
63
+ :top, :middle, :bottom,
64
+ :wrap
65
+ ].each do |s|
66
+ style(".align.#{s}") { align s }
67
+ end
68
+ style('.align.rotate') { align 90 }
69
+ }
70
+ end
71
+
72
+ should "build a style obj with empty alignment settings by default" do
73
+ assert_equal nil, subject.send(:style, 'align').alignment
74
+ end
75
+
76
+ should "build style objs for horizontal alignment settings" do
77
+ assert_equal ::Xmlss::Style::Alignment.horizontal(:left), subject.send(:style, 'align left').alignment.horizontal
78
+ assert_equal ::Xmlss::Style::Alignment.horizontal(:center), subject.send(:style, 'align center').alignment.horizontal
79
+ assert_equal ::Xmlss::Style::Alignment.horizontal(:right), subject.send(:style, 'align right').alignment.horizontal
80
+ end
81
+
82
+ should "build style objs for vertical alignment settings" do
83
+ assert_equal ::Xmlss::Style::Alignment.vertical(:top), subject.send(:style, 'align top').alignment.vertical
84
+ assert_equal ::Xmlss::Style::Alignment.vertical(:center), subject.send(:style, 'align middle').alignment.vertical
85
+ assert_equal ::Xmlss::Style::Alignment.vertical(:bottom), subject.send(:style, 'align bottom').alignment.vertical
86
+ end
87
+
88
+ should "build style objs for text wrap settings" do
89
+ assert_equal true, subject.send(:style, 'align wrap').alignment.wrap_text?
90
+ end
91
+
92
+ should "build style objs for text rotation settings" do
93
+ assert_equal 90, subject.send(:style, 'align rotate').alignment.rotate
94
+ end
95
+
96
+ end
97
+ end
98
+
99
+ class XmlssWriter::Font < Test::Unit::TestCase
100
+ context("Font style writer") do
101
+
102
+ subject { XmlssWriter::Base.new }
103
+ before do
104
+ subject.workbook = Workbook.new {
105
+ [
106
+ :underline, :double_underline,
107
+ :subscript, :superscript,
108
+ :bold, :italic, :strikethrough,
109
+ :wrap
110
+ ].each do |s|
111
+ style(".font.#{s}") { font s }
112
+ end
113
+ style('.font.size') { font 14 }
114
+ style('.font.color') { font '#FF0000' }
115
+ }
116
+ end
117
+
118
+ should "build a style obj with empty font settings by default" do
119
+ assert_equal nil, subject.send(:style, 'font').font
120
+ end
121
+
122
+ should "build style objs for font underline settings" do
123
+ assert_equal ::Xmlss::Style::Font.underline(:single), subject.send(:style, 'font underline').font.underline
124
+ assert_equal ::Xmlss::Style::Font.underline(:double), subject.send(:style, 'font double_underline').font.underline
125
+ end
126
+
127
+ should "build style objs for font alignment settings" do
128
+ assert_equal ::Xmlss::Style::Font.alignment(:subscript), subject.send(:style, 'font subscript').font.alignment
129
+ assert_equal ::Xmlss::Style::Font.alignment(:superscript), subject.send(:style, 'font superscript').font.alignment
130
+ end
131
+
132
+ should "build style objs for font style settings" do
133
+ assert_equal true, subject.send(:style, 'font bold').font.bold?
134
+ assert_equal true, subject.send(:style, 'font italic').font.italic?
135
+ assert_equal true, subject.send(:style, 'font strikethrough').font.strike_through?
136
+ end
137
+
138
+ should "build style objs for font size" do
139
+ assert_equal 14, subject.send(:style, 'font size').font.size
140
+ end
141
+
142
+ should "build style objs for font color" do
143
+ assert_equal '#FF0000', subject.send(:style, 'font color').font.color
144
+ end
145
+
146
+ end
147
+ end
148
+
149
+ class XmlssWriter::Bg < Test::Unit::TestCase
150
+ context("Font bg writer") do
151
+
152
+ subject { XmlssWriter::Base.new }
153
+ before do
154
+ subject.workbook = Workbook.new {
155
+ style('.bg.color') { bg '#FF0000' }
156
+ style('.bg.pattern-only') { bg :solid }
157
+ style('.bg.pattern-color') { bg :horz_stripe => '#0000FF' }
158
+ }
159
+ end
160
+
161
+ should "build a style obj with empty bg settings by default" do
162
+ assert_equal nil, subject.send(:style, 'bg').interior
163
+ end
164
+
165
+ should "build style objs for bg color" do
166
+ assert_equal '#FF0000', subject.send(:style, 'bg color').interior.color
167
+ end
168
+
169
+ should "build style objs for bg pattern settings" do
170
+ assert_equal ::Xmlss::Style::Interior.pattern(:solid), subject.send(:style, 'bg pattern-only').interior.pattern
171
+ assert_equal nil, subject.send(:style, 'bg pattern-only').interior.pattern_color
172
+ assert_equal ::Xmlss::Style::Interior.pattern(:horz_stripe), subject.send(:style, 'bg pattern-color').interior.pattern
173
+ assert_equal '#0000FF', subject.send(:style, 'bg pattern-color').interior.pattern_color
174
+ end
175
+
176
+ end
177
+ end
178
+
179
+ class XmlssWriter::Border < Test::Unit::TestCase
180
+ context("Font border writer") do
181
+
182
+ subject { XmlssWriter::Base.new }
183
+ before do
184
+ subject.workbook = Workbook.new {
185
+ ::Osheet::Style::BORDER_POSITIONS.each do |p|
186
+ style(".border.#{p}") { send("border_#{p}", :thin) }
187
+ end
188
+ [:hairline, :thin, :medium, :thick].each do |w|
189
+ style(".border.#{w}") { border_top w }
190
+ end
191
+ [:none, :continuous, :dash, :dot, :dash_dot, :dash_dot_dot].each do |s|
192
+ style(".border.#{s}") { border_top s }
193
+ end
194
+ style('.border.color') { border_top '#FF0000' }
195
+ style('.border.all') { border :thick, :dash, '#FF0000' }
196
+ }
197
+ end
198
+
199
+ should "build a style obj with empty border settings by default" do
200
+ style = subject.send(:style, 'border')
201
+ assert_kind_of ::Xmlss::ItemSet, style.borders
202
+ assert_equal [], style.borders
203
+ end
204
+
205
+ should "build style objs with identical settings for all positions when using 'border'" do
206
+ style = subject.send(:style, 'border all')
207
+ assert_equal 4, style.borders.size
208
+ assert_equal 1, style.borders.collect{|p| p.weight}.uniq.size
209
+ assert_equal 1, style.borders.collect{|p| p.line_style}.uniq.size
210
+ assert_equal 1, style.borders.collect{|p| p.color}.uniq.size
211
+ end
212
+
213
+ should "build style objs for border specific positions" do
214
+ ::Osheet::Style::BORDER_POSITIONS.each do |p|
215
+ assert_equal ::Xmlss::Style::Border.position(p), subject.send(:style, "border #{p}").borders.first.position
216
+ end
217
+ end
218
+
219
+ should "build style objs for border weight settings" do
220
+ [:hairline, :thin, :medium, :thick].each do |w|
221
+ assert_equal ::Xmlss::Style::Border.weight(w), subject.send(:style, "border #{w}").borders.first.weight
222
+ end
223
+ end
224
+
225
+ should "build style objs for border style settings" do
226
+ [:none, :continuous, :dash, :dot, :dash_dot, :dash_dot_dot].each do |s|
227
+ assert_equal ::Xmlss::Style::Border.line_style(s), subject.send(:style, "border #{s}").borders.first.line_style
228
+ end
229
+ end
230
+
231
+ should "build style objs for border color" do
232
+ assert_equal '#FF0000', subject.send(:style, 'border color').borders.first.color
233
+ end
234
+
235
+ end
236
+ end
237
+
238
+ class XmlssWriter::NumberFormat < Test::Unit::TestCase
239
+ context("Xmlss style number format writer") do
240
+
241
+ subject { XmlssWriter::Base.new }
242
+
243
+ should "build a style obj with formatting" do
244
+ # TODO: uncomment when further styles defined
245
+ #assert_equal '@', subject.send(:style, '', Osheet::Format.new(:text)).number_format.format
246
+ #assert_equal 'mm/dd/yy', subject.send(:style, '', 'mm/dd/yy').number_format.format
247
+ end
248
+
249
+ end
250
+ end
251
+
252
+
253
+ end