osheet 0.1.0 → 0.2.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 (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