surpass 0.0.3

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 (78) hide show
  1. data/History.txt +0 -0
  2. data/README.txt +133 -0
  3. data/Rakefile +35 -0
  4. data/examples/big-16mb.rb +25 -0
  5. data/examples/big-random-strings.rb +28 -0
  6. data/examples/blanks.rb +34 -0
  7. data/examples/col_width.rb +16 -0
  8. data/examples/dates.rb +31 -0
  9. data/examples/format.rb +23 -0
  10. data/examples/hello-world.rb +9 -0
  11. data/examples/image.rb +10 -0
  12. data/examples/merged.rb +36 -0
  13. data/examples/merged0.rb +27 -0
  14. data/examples/merged1.rb +99 -0
  15. data/examples/num_formats.rb +55 -0
  16. data/examples/numbers.rb +24 -0
  17. data/examples/outline.rb +110 -0
  18. data/examples/panes.rb +48 -0
  19. data/examples/protection.rb +132 -0
  20. data/examples/python.bmp +0 -0
  21. data/examples/row_styles.rb +16 -0
  22. data/examples/row_styles_empty.rb +15 -0
  23. data/examples/set_cell_and_range_style.rb +12 -0
  24. data/examples/wrapped-text.rb +13 -0
  25. data/examples/write_arrays.rb +16 -0
  26. data/examples/ws_props.rb +80 -0
  27. data/lib/biff_record.rb +2168 -0
  28. data/lib/bitmap.rb +218 -0
  29. data/lib/cell.rb +214 -0
  30. data/lib/chart.rb +16 -0
  31. data/lib/column.rb +40 -0
  32. data/lib/document.rb +406 -0
  33. data/lib/excel_formula.rb +6 -0
  34. data/lib/excel_magic.rb +1013 -0
  35. data/lib/formatting.rb +554 -0
  36. data/lib/row.rb +137 -0
  37. data/lib/style.rb +179 -0
  38. data/lib/surpass.rb +51 -0
  39. data/lib/utilities.rb +86 -0
  40. data/lib/workbook.rb +206 -0
  41. data/lib/worksheet.rb +561 -0
  42. data/spec/biff_record_spec.rb +268 -0
  43. data/spec/cell_spec.rb +56 -0
  44. data/spec/data/random-strings.txt +10000 -0
  45. data/spec/document_spec.rb +168 -0
  46. data/spec/excel_formula_spec.rb +0 -0
  47. data/spec/formatting_spec.rb +53 -0
  48. data/spec/reference/P-0508-0000507647-3280-5298.xls +0 -0
  49. data/spec/reference/all-cell-styles.bin +0 -0
  50. data/spec/reference/all-number-formats.bin +0 -0
  51. data/spec/reference/all-styles.bin +0 -0
  52. data/spec/reference/mini.xls +0 -0
  53. data/spec/row_spec.rb +19 -0
  54. data/spec/spec_helper.rb +10 -0
  55. data/spec/style_spec.rb +89 -0
  56. data/spec/utilities_spec.rb +57 -0
  57. data/spec/workbook_spec.rb +48 -0
  58. data/spec/worksheet_spec.rb +0 -0
  59. data/stats/cloc.txt +8 -0
  60. data/stats/rcov.txt +0 -0
  61. data/stats/specdoc.txt +158 -0
  62. data/surpass-manual-0-0-3.pdf +0 -0
  63. data/surpass.gemspec +34 -0
  64. data/tasks/ann.rake +80 -0
  65. data/tasks/bones.rake +20 -0
  66. data/tasks/excel.rake +6 -0
  67. data/tasks/gem.rake +201 -0
  68. data/tasks/git.rake +40 -0
  69. data/tasks/metrics.rake +42 -0
  70. data/tasks/notes.rake +27 -0
  71. data/tasks/post_load.rake +34 -0
  72. data/tasks/rdoc.rake +51 -0
  73. data/tasks/rubyforge.rake +55 -0
  74. data/tasks/setup.rb +292 -0
  75. data/tasks/spec.rake +54 -0
  76. data/tasks/svn.rake +47 -0
  77. data/tasks/test.rake +40 -0
  78. metadata +144 -0
@@ -0,0 +1,268 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe InterfaceHeaderRecord do
4
+ it "should pack correctly" do
5
+ b = InterfaceHeaderRecord.new
6
+ b.to_biff.unpack('M*').should === ["\341\000\002\000\260\004"]
7
+ end
8
+ end
9
+
10
+ describe InterfaceEndRecord do
11
+ it "should pack correctly" do
12
+ b = InterfaceEndRecord.new
13
+ b.to_biff.unpack('M*').should === ["\342\000\000\000"]
14
+ end
15
+ end
16
+
17
+ describe MMSRecord do
18
+ it "should pack correctly" do
19
+ b = MMSRecord.new
20
+ b.to_biff.unpack('M*').should === ["\301\000\002\000\000\000"]
21
+ end
22
+ end
23
+
24
+ describe WriteAccessRecord do
25
+ it "should pack correctly" do
26
+ b = WriteAccessRecord.new("Ana")
27
+ b.to_biff.unpack('M*').should === ["\\\000p\000Ana" + " " * 109]
28
+ end
29
+ end
30
+
31
+ describe DSFRecord do
32
+ it "should pack correctly" do
33
+ b = DSFRecord.new
34
+ b.to_biff.unpack('M*').should === ["a\001\002\000\000\000"]
35
+ end
36
+ end
37
+
38
+ describe TabIDRecord do
39
+ it "should pack correctly" do
40
+ b = TabIDRecord.new(2)
41
+ b.record_data.should === "\001\000\002\000"
42
+ b.to_biff.unpack('A*').should === ["=\001\004\000\001\000\002"]
43
+ end
44
+ end
45
+
46
+ describe FnGroupCountRecord do
47
+ it "should pack correctly" do
48
+ b = FnGroupCountRecord.new
49
+ b.record_data.should === "\016\000"
50
+ b.to_biff.unpack('A*').should === ["\234\000\002\000\016"]
51
+ end
52
+ end
53
+
54
+ describe WindowProtectRecord do
55
+ it "should pack correctly" do
56
+ b = WindowProtectRecord.new(0)
57
+ b.record_data.should === "\000\000"
58
+ b.to_biff.unpack('A*').should === ["\031\000\002"]
59
+ end
60
+ end
61
+
62
+ describe ObjectProtectRecord do
63
+ it "should pack correctly" do
64
+ b = ObjectProtectRecord.new(0)
65
+ b.record_data.should === "\000\000"
66
+ b.to_biff.unpack('A*').should === ["c\000\002"]
67
+ end
68
+ end
69
+
70
+ describe ScenarioProtectRecord do
71
+ it "should pack correctly" do
72
+ b = ScenarioProtectRecord.new(0)
73
+ b.record_data.should === "\000\000"
74
+ b.to_biff.unpack('A*').should === ["\335\000\002"]
75
+ end
76
+ end
77
+
78
+ describe PasswordRecord do
79
+ before(:each) do
80
+ @b = PasswordRecord.new
81
+ end
82
+ it "should pack correctly with blank password" do
83
+ @b.password_hash("").should == 0
84
+ end
85
+
86
+ it "should pack correctly with a password of 123456" do
87
+ @b.password_hash("123456").should === 50975
88
+ end
89
+
90
+ it "should pack correctly with a password of abcdefghij" do
91
+ @b.password_hash("abcdefghij").should == 65265
92
+ end
93
+
94
+ it "should pack correctly with a password of ok" do
95
+ @b.password_hash("ok").should == 53051
96
+ end
97
+ end
98
+
99
+ describe Prot4RevRecord do
100
+ it "should pack correctly" do
101
+ b = Prot4RevRecord.new
102
+ b.record_data.should === "\000\000"
103
+ b.to_biff.unpack('A*').should === ["\257\001\002"]
104
+ end
105
+ end
106
+
107
+ describe Prot4RevPassRecord do
108
+ it "should pack correctly" do
109
+ b = Prot4RevPassRecord.new
110
+ b.record_data.should === "\000\000"
111
+ b.to_biff.unpack('A*').should === ["\274\001\002"]
112
+ end
113
+ end
114
+
115
+ describe BackupRecord do
116
+ it "should pack correctly" do
117
+ b = BackupRecord.new(0)
118
+ b.record_data.should === "\000\000"
119
+ b.to_biff.unpack('A*').should === ["@\000\002"]
120
+ end
121
+ end
122
+
123
+ describe HideObjRecord do
124
+ it "should pack correctly" do
125
+ b = HideObjRecord.new
126
+ b.record_data.should === "\000\000"
127
+ b.to_biff.unpack('A*').should === ["\215\000\002"]
128
+ end
129
+ end
130
+
131
+ describe RefreshAllRecord do
132
+ it "should pack correctly" do
133
+ b = RefreshAllRecord.new
134
+ b.record_data.should === "\000\000"
135
+ b.to_biff.unpack('A*').should === ["\267\001\002"]
136
+ end
137
+ end
138
+
139
+ describe BookBoolRecord do
140
+ it "should pack correctly" do
141
+ b = BookBoolRecord.new
142
+ b.record_data.should === "\000\000"
143
+ b.to_biff.unpack('A*').should === ["\332\000\002"]
144
+ end
145
+ end
146
+
147
+ describe CountryRecord do
148
+ it "should pack correctly" do
149
+ b = CountryRecord.new(1,1)
150
+ b.record_data.should === "\001\000\001\000"
151
+ b.to_biff.unpack('A*').should === ["\332\000\004\000\001\000\001"]
152
+ end
153
+ end
154
+
155
+ describe UseSelfsRecord do
156
+ it "should pack correctly" do
157
+ b = UseSelfsRecord.new
158
+ b.record_data.should === "\001\000"
159
+ b.to_biff.unpack('A*').should === ["`\001\002\000\001"]
160
+ end
161
+ end
162
+
163
+ describe EOFRecord do
164
+ it "should pack correctly" do
165
+ b = EOFRecord.new
166
+ b.record_data.should === ""
167
+ b.to_biff.unpack('A*').should === ["\n"]
168
+ end
169
+ end
170
+
171
+ describe DateModeRecord do
172
+ it "should pack correctly when passed true" do
173
+ b = DateModeRecord.new(true)
174
+ b.record_data.should === "\001\000"
175
+ b.to_biff.unpack('A*').should === ["\"\000\002\000\001"]
176
+ end
177
+ it "should pack correctly when passed false" do
178
+ b = DateModeRecord.new(false)
179
+ b.record_data.should === "\000\000"
180
+ b.to_biff.unpack('A*').should === ["\"\000\002"]
181
+ end
182
+ end
183
+
184
+ describe PrecisionRecord do
185
+ it "should pack correctly when passed true" do
186
+ b = PrecisionRecord.new(true)
187
+ b.record_data.should === "\001\000"
188
+ b.to_biff.unpack('A*').should === ["\016\000\002\000\001"]
189
+ end
190
+ it "should pack correctly when passed false" do
191
+ b = PrecisionRecord.new(false)
192
+ b.record_data.should === "\000\000"
193
+ b.to_biff.unpack('A*').should === ["\016\000\002"]
194
+ end
195
+ end
196
+
197
+ describe CodepageBiff8Record do
198
+ it "should pack correctly" do
199
+ b = CodepageBiff8Record.new
200
+ b.record_data.should === "\260\004"
201
+ b.to_biff.unpack('A*').should === ["B\000\002\000\260\004"]
202
+ end
203
+ end
204
+
205
+ describe Window1Record do
206
+ it "should pack correctly" do
207
+ b = Window1Record.new(1,1,1,1,1,1,1,1,1)
208
+ b.record_data.should === "\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000"
209
+ b.to_biff.unpack('A*').should === ["=\000\022\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001"]
210
+ end
211
+ end
212
+
213
+ describe FontRecord do
214
+ it "should pack correctly" do
215
+
216
+ b = FontRecord.new(200,0,32767,400,0,0,0,204,"Arial")
217
+ b.record_data.should === "\310\000\000\000\377\177\220\001\000\000\000\000\314\000\005\000Arial"
218
+ end
219
+ end
220
+
221
+ # describe XFRecord do
222
+ # it "should pack correctly" do
223
+ # b = XFRecord.new([1,1,Alignment.new,Borders.new,Pattern.new,Protection.new])
224
+ # puts binary_string_to_hex_array(b.record_data)
225
+ # b.record_data.should === "\001\000\001\000\001\000"
226
+ # b.to_biff.unpack('A*').should === ["\257\001\002"]
227
+ # end
228
+ # end
229
+
230
+ describe StyleRecord do
231
+ it "should pack correctly" do
232
+ b = StyleRecord.new
233
+ b.record_data.should === "\000\200\000\377"
234
+ b.to_biff.unpack('A*').should === ["\223\002\004\000\000\200\000\377"]
235
+ end
236
+ end
237
+
238
+ describe BoundSheetRecord do
239
+ it "should pack correctly" do
240
+ b = BoundSheetRecord.new(0, 0, "x")
241
+ b.record_data.should === "\000\000\000\000\000\000\001\000x"
242
+ b.to_biff.unpack('A*').should === ["\205\000\t\000\000\000\000\000\000\000\001\000x"]
243
+ end
244
+ end
245
+
246
+ # describe ExtSSTRecord do
247
+ # it "should pack correctly" do
248
+ # b = ExtSSTRecord.new(1,[1],1)
249
+ # b.record_data.should === "\000\000"
250
+ # b.to_biff.unpack('A*').should === ["\257\001\002"]
251
+ # end
252
+ # end
253
+
254
+ describe DimensionsRecord do
255
+ it "should pack correctly" do
256
+ b = DimensionsRecord.new(0,0,5,5)
257
+ b.record_data.should === "\000\000\000\000\001\000\000\000\005\000\006\000\000\000"
258
+ b.to_biff.unpack('A*').should === ["\000\002\016\000\000\000\000\000\001\000\000\000\005\000\006"]
259
+ end
260
+ end
261
+
262
+ # describe MergedCellsRecord do
263
+ # it "should pack correctly" do
264
+ # b = MergedCellsRecord.new([[1,1,2,2]])
265
+ # b.record_data.should === "\345\000\n\000\001\000\001\000\001\000\002\000\002\000"
266
+ # b.to_biff.unpack('A*').should === ["\345\000\n\000\001\000\001\000\001\000\002\000\002"]
267
+ # end
268
+ # end
data/spec/cell_spec.rb ADDED
@@ -0,0 +1,56 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe NumberCell, "to_biff" do
4
+ before(:all) do
5
+ @w = Workbook.new
6
+ @s = @w.add_sheet('rk_tests')
7
+ end
8
+
9
+ it "should encode with rk_encode" do
10
+ TEST_VALUES.each_with_index do |x, i|
11
+ # Write original test values
12
+ @s.write(i, 0, x)
13
+
14
+ # Write test values divided by 100
15
+ @s.write(i, 3, x/100.00)
16
+
17
+ # Write negative of test values
18
+ @s.write(i, 6, x)
19
+
20
+ # Write negative test values divided by 100
21
+ @s.write(i, 9, -x/100.00)
22
+ end
23
+ end
24
+
25
+ after(:all) do
26
+ @w.save("spec/output/cells-rk.xls")
27
+ end
28
+ end
29
+
30
+ TEST_VALUES = [
31
+ 130.63999999999999,
32
+ 130.64,
33
+ -18.649999999999999,
34
+ -18.65,
35
+ 137.19999999999999,
36
+ 137.20,
37
+ -16.079999999999998,
38
+ -16.08,
39
+ 0,
40
+ 1,
41
+ 2,
42
+ 3,
43
+ 0x1fffffff,
44
+ 0x20000000,
45
+ 0x20000001,
46
+ 1000999999,
47
+ 0x3fffffff,
48
+ 0x40000000,
49
+ 0x40000001,
50
+ 0x7fffffff,
51
+ 0x80000000,
52
+ 0x80000001,
53
+ 0xffffffff,
54
+ 0x100000000,
55
+ 0x100000001
56
+ ]