writeexcel 0.5.0 → 0.6.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 (130) hide show
  1. data/.gitattributes +1 -1
  2. data/.gitignore +24 -24
  3. data/README.rdoc +34 -55
  4. data/VERSION +1 -1
  5. data/charts/chartex.rb +316 -316
  6. data/charts/demo1.rb +46 -46
  7. data/charts/demo2.rb +65 -65
  8. data/charts/demo3.rb +117 -117
  9. data/charts/demo4.rb +119 -119
  10. data/charts/demo5.rb +48 -48
  11. data/examples/a_simple.rb +43 -43
  12. data/examples/autofilter.rb +265 -265
  13. data/examples/bigfile.rb +30 -30
  14. data/examples/chart_area.rb +121 -121
  15. data/examples/chart_bar.rb +120 -120
  16. data/examples/chart_column.rb +120 -120
  17. data/examples/chart_line.rb +120 -120
  18. data/examples/chart_pie.rb +108 -108
  19. data/examples/chart_scatter.rb +121 -121
  20. data/examples/chart_stock.rb +148 -148
  21. data/examples/chess.rb +142 -142
  22. data/examples/colors.rb +129 -129
  23. data/examples/comments1.rb +27 -27
  24. data/examples/comments2.rb +352 -352
  25. data/examples/copyformat.rb +52 -52
  26. data/examples/data_validate.rb +279 -279
  27. data/examples/date_time.rb +87 -87
  28. data/examples/defined_name.rb +32 -32
  29. data/examples/demo.rb +124 -124
  30. data/examples/diag_border.rb +36 -36
  31. data/examples/formats.rb +490 -490
  32. data/examples/formula_result.rb +30 -30
  33. data/examples/header.rb +137 -137
  34. data/examples/hide_sheet.rb +29 -29
  35. data/examples/hyperlink.rb +43 -43
  36. data/examples/images.rb +63 -63
  37. data/examples/indent.rb +31 -31
  38. data/examples/merge1.rb +40 -40
  39. data/examples/merge2.rb +45 -45
  40. data/examples/merge3.rb +66 -66
  41. data/examples/merge4.rb +83 -83
  42. data/examples/merge5.rb +80 -80
  43. data/examples/merge6.rb +67 -67
  44. data/examples/outline.rb +255 -255
  45. data/examples/outline_collapsed.rb +209 -209
  46. data/examples/panes.rb +113 -113
  47. data/examples/properties.rb +34 -34
  48. data/examples/properties_jp.rb +33 -33
  49. data/examples/protection.rb +47 -47
  50. data/examples/regions.rb +53 -53
  51. data/examples/repeat.rb +43 -43
  52. data/examples/right_to_left.rb +27 -27
  53. data/examples/row_wrap.rb +53 -53
  54. data/examples/stats.rb +74 -74
  55. data/examples/stocks.rb +81 -81
  56. data/examples/tab_colors.rb +31 -31
  57. data/examples/utf8.rb +15 -15
  58. data/examples/write_arrays.rb +83 -83
  59. data/lib/writeexcel/biffwriter.rb +232 -232
  60. data/lib/writeexcel/caller_info.rb +12 -12
  61. data/lib/writeexcel/chart.rb +2190 -2177
  62. data/lib/writeexcel/charts/area.rb +154 -154
  63. data/lib/writeexcel/charts/bar.rb +177 -177
  64. data/lib/writeexcel/charts/column.rb +156 -156
  65. data/lib/writeexcel/charts/external.rb +66 -66
  66. data/lib/writeexcel/charts/line.rb +154 -154
  67. data/lib/writeexcel/charts/pie.rb +169 -169
  68. data/lib/writeexcel/charts/scatter.rb +192 -192
  69. data/lib/writeexcel/charts/stock.rb +213 -213
  70. data/lib/writeexcel/colors.rb +64 -64
  71. data/lib/writeexcel/compatibility.rb +0 -255
  72. data/lib/writeexcel/debug_info.rb +37 -33
  73. data/lib/writeexcel/excelformulaparser.rb +587 -587
  74. data/lib/writeexcel/format.rb +13 -4
  75. data/lib/writeexcel/formula.rb +26 -9
  76. data/lib/writeexcel/helper.rb +68 -64
  77. data/lib/writeexcel/olewriter.rb +311 -311
  78. data/lib/writeexcel/properties.rb +242 -240
  79. data/lib/writeexcel/storage_lite.rb +984 -978
  80. data/lib/writeexcel/workbook.rb +3210 -3192
  81. data/lib/writeexcel/worksheet.rb +143 -51
  82. data/lib/writeexcel/write_file.rb +44 -40
  83. data/lib/writeexcel.rb +1159 -1159
  84. data/test/helper.rb +31 -28
  85. data/test/perl_output/README +31 -31
  86. data/test/test_00_IEEE_double.rb +13 -13
  87. data/test/test_01_add_worksheet.rb +10 -10
  88. data/test/test_02_merge_formats.rb +53 -53
  89. data/test/test_04_dimensions.rb +392 -392
  90. data/test/test_05_rows.rb +179 -179
  91. data/test/test_06_extsst.rb +77 -77
  92. data/test/test_11_date_time.rb +479 -479
  93. data/test/test_12_date_only.rb +501 -501
  94. data/test/test_13_date_seconds.rb +481 -481
  95. data/test/test_21_escher.rb +637 -637
  96. data/test/test_22_mso_drawing_group.rb +745 -745
  97. data/test/test_23_note.rb +73 -73
  98. data/test/test_24_txo.rb +75 -75
  99. data/test/test_25_position_object.rb +84 -84
  100. data/test/test_26_autofilter.rb +314 -314
  101. data/test/test_27_autofilter.rb +131 -131
  102. data/test/test_28_autofilter.rb +161 -161
  103. data/test/test_29_process_jpg.rb +683 -683
  104. data/test/test_30_validation_dval.rb +77 -77
  105. data/test/test_31_validation_dv_strings.rb +126 -126
  106. data/test/test_32_validation_dv_formula.rb +206 -206
  107. data/test/test_40_property_types.rb +188 -188
  108. data/test/test_41_properties.rb +235 -235
  109. data/test/test_42_set_properties.rb +437 -437
  110. data/test/test_50_name_stored.rb +299 -299
  111. data/test/test_51_name_print_area.rb +357 -357
  112. data/test/test_52_name_print_titles.rb +454 -454
  113. data/test/test_53_autofilter.rb +203 -203
  114. data/test/test_60_chart_generic.rb +578 -578
  115. data/test/test_61_chart_subclasses.rb +95 -95
  116. data/test/test_62_chart_formats.rb +272 -272
  117. data/test/test_63_chart_area_formats.rb +649 -649
  118. data/test/test_biff.rb +75 -75
  119. data/test/test_compatibility.rb +12 -627
  120. data/test/test_example_match.rb +3144 -3144
  121. data/test/test_formula.rb +61 -61
  122. data/test/test_ole.rb +106 -106
  123. data/test/test_storage_lite.rb +125 -125
  124. data/test/test_workbook.rb +139 -139
  125. data/test/test_worksheet.rb +110 -110
  126. data/utils/add_magic_comment.rb +80 -80
  127. data/writeexcel.gemspec +4 -6
  128. data/writeexcel.rdoc +58 -15
  129. metadata +9 -6
  130. data/test/test_new_encoding.rb +0 -205
@@ -1,139 +1,139 @@
1
- # -*- coding: utf-8 -*-
2
- require 'helper'
3
- require "stringio"
4
-
5
- class TC_Workbook < Test::Unit::TestCase
6
-
7
- def setup
8
- @test_file = StringIO.new
9
- @workbook = Workbook.new(@test_file)
10
- end
11
-
12
- def teardown
13
- @workbook.close
14
- end
15
-
16
- def test_new
17
- assert_kind_of(Workbook, @workbook)
18
- end
19
-
20
- def test_add_worksheet
21
- sheetnames = ['sheet1', 'sheet2']
22
- (0 .. sheetnames.size-1).each do |i|
23
- sheets = @workbook.sheets
24
- assert_equal(i, sheets.size)
25
- @workbook.add_worksheet(sheetnames[i])
26
- sheets = @workbook.sheets
27
- assert_equal(i+1, sheets.size)
28
- end
29
- end
30
-
31
- def test_set_tempdir_after_sheet_added
32
- # after shees added, call set_tempdir raise RuntimeError
33
- @workbook.add_worksheet('name')
34
- assert_raise(RuntimeError, "already sheet exists, but set_tempdir() doesn't raise"){
35
- @workbook.set_tempdir
36
- }
37
- end
38
-
39
- def test_set_tempdir_with_invalid_dir
40
- # invalid dir raise RuntimeError
41
- while true do
42
- dir = Time.now.to_s
43
- break unless FileTest.directory?(dir)
44
- sleep 0.1
45
- end
46
- assert_raise(RuntimeError, "set_tempdir() doesn't raise invalid dir:#{dir}."){
47
- @workbook.set_tempdir(dir)
48
- }
49
- end
50
-
51
- =begin
52
- #
53
- # Comment out because Workbook#check_sheetname was set to private method.
54
- #
55
- def test_check_sheetname
56
- valids = valid_sheetname
57
- invalids = invalid_sheetname
58
- worksheet1 = @workbook.add_worksheet # implicit name 'Sheet1'
59
- worksheet2 = @workbook.add_worksheet # implicit name 'Sheet2'
60
- worksheet3 = @workbook.add_worksheet 'Sheet3' # implicit name 'Sheet3'
61
- worksheet1 = @workbook.add_worksheet 'Sheetz' # implicit name 'Sheetz'
62
-
63
- valids.each do |test|
64
- target = test[0]
65
- sheetname = test[1]
66
- caption = test[2]
67
- assert_nothing_raised { @workbook.check_sheetname(sheetname) }
68
- end
69
- invalids.each do |test|
70
- target = test[0]
71
- sheetname = test[1]
72
- caption = test[2]
73
- assert_raise(RuntimeError, "sheetname: #{sheetname}") {
74
- @workbook.check_sheetname(sheetname)
75
- }
76
- end
77
- end
78
- =end
79
-
80
- def test_raise_set_compatibility_after_sheet_creation
81
- @workbook.add_worksheet
82
- assert_raise(RuntimeError) { @workbook.compatibility_mode }
83
- end
84
-
85
- def valid_sheetname
86
- [
87
- # Tests for valid names
88
- [ 'PASS', nil, 'No worksheet name' ],
89
- [ 'PASS', '', 'Blank worksheet name' ],
90
- [ 'PASS', 'Sheet10', 'Valid worksheet name' ],
91
- [ 'PASS', 'a' * 31, 'Valid 31 char name' ]
92
- ]
93
- end
94
-
95
- def invalid_sheetname
96
- [
97
- # Tests for invalid names
98
- [ 'FAIL', 'Sheet1', 'Caught duplicate name' ],
99
- [ 'FAIL', 'Sheet2', 'Caught duplicate name' ],
100
- [ 'FAIL', 'Sheet3', 'Caught duplicate name' ],
101
- [ 'FAIL', 'sheet1', 'Caught case-insensitive name'],
102
- [ 'FAIL', 'SHEET1', 'Caught case-insensitive name'],
103
- [ 'FAIL', 'sheetz', 'Caught case-insensitive name'],
104
- [ 'FAIL', 'SHEETZ', 'Caught case-insensitive name'],
105
- [ 'FAIL', 'a' * 32, 'Caught long name' ],
106
- [ 'FAIL', '[', 'Caught invalid char' ],
107
- [ 'FAIL', ']', 'Caught invalid char' ],
108
- [ 'FAIL', ':', 'Caught invalid char' ],
109
- [ 'FAIL', '*', 'Caught invalid char' ],
110
- [ 'FAIL', '?', 'Caught invalid char' ],
111
- [ 'FAIL', '/', 'Caught invalid char' ],
112
- [ 'FAIL', '\\', 'Caught invalid char' ]
113
- ]
114
- end
115
-
116
- def test_add_format_must_accept_one_or_more_hash_params
117
- font = {
118
- :font => 'MS 明朝',
119
- :size => 12,
120
- :color => 'blue',
121
- :bold => 1
122
- }
123
- shading = {
124
- :bg_color => 'green',
125
- :pattern => 1
126
- }
127
- properties = font.merge(shading)
128
-
129
- format1 = @workbook.add_format(properties)
130
- format2 = @workbook.add_format(font, shading)
131
- assert(format_equal?(format1, format2))
132
- end
133
-
134
- def format_equal?(f1, f2)
135
- require 'yaml'
136
- re = /xf_index: \d+\n/
137
- YAML.dump(f1).sub(re, '') == YAML.dump(f2).sub(re, '')
138
- end
139
- end
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require "stringio"
4
+
5
+ class TC_Workbook < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @test_file = StringIO.new
9
+ @workbook = Workbook.new(@test_file)
10
+ end
11
+
12
+ def teardown
13
+ @workbook.close
14
+ end
15
+
16
+ def test_new
17
+ assert_kind_of(Workbook, @workbook)
18
+ end
19
+
20
+ def test_add_worksheet
21
+ sheetnames = ['sheet1', 'sheet2']
22
+ (0 .. sheetnames.size-1).each do |i|
23
+ sheets = @workbook.sheets
24
+ assert_equal(i, sheets.size)
25
+ @workbook.add_worksheet(sheetnames[i])
26
+ sheets = @workbook.sheets
27
+ assert_equal(i+1, sheets.size)
28
+ end
29
+ end
30
+
31
+ def test_set_tempdir_after_sheet_added
32
+ # after shees added, call set_tempdir raise RuntimeError
33
+ @workbook.add_worksheet('name')
34
+ assert_raise(RuntimeError, "already sheet exists, but set_tempdir() doesn't raise"){
35
+ @workbook.set_tempdir
36
+ }
37
+ end
38
+
39
+ def test_set_tempdir_with_invalid_dir
40
+ # invalid dir raise RuntimeError
41
+ while true do
42
+ dir = Time.now.to_s
43
+ break unless FileTest.directory?(dir)
44
+ sleep 0.1
45
+ end
46
+ assert_raise(RuntimeError, "set_tempdir() doesn't raise invalid dir:#{dir}."){
47
+ @workbook.set_tempdir(dir)
48
+ }
49
+ end
50
+
51
+ =begin
52
+ #
53
+ # Comment out because Workbook#check_sheetname was set to private method.
54
+ #
55
+ def test_check_sheetname
56
+ valids = valid_sheetname
57
+ invalids = invalid_sheetname
58
+ worksheet1 = @workbook.add_worksheet # implicit name 'Sheet1'
59
+ worksheet2 = @workbook.add_worksheet # implicit name 'Sheet2'
60
+ worksheet3 = @workbook.add_worksheet 'Sheet3' # implicit name 'Sheet3'
61
+ worksheet1 = @workbook.add_worksheet 'Sheetz' # implicit name 'Sheetz'
62
+
63
+ valids.each do |test|
64
+ target = test[0]
65
+ sheetname = test[1]
66
+ caption = test[2]
67
+ assert_nothing_raised { @workbook.check_sheetname(sheetname) }
68
+ end
69
+ invalids.each do |test|
70
+ target = test[0]
71
+ sheetname = test[1]
72
+ caption = test[2]
73
+ assert_raise(RuntimeError, "sheetname: #{sheetname}") {
74
+ @workbook.check_sheetname(sheetname)
75
+ }
76
+ end
77
+ end
78
+ =end
79
+
80
+ def test_raise_set_compatibility_after_sheet_creation
81
+ @workbook.add_worksheet
82
+ assert_raise(RuntimeError) { @workbook.compatibility_mode }
83
+ end
84
+
85
+ def valid_sheetname
86
+ [
87
+ # Tests for valid names
88
+ [ 'PASS', nil, 'No worksheet name' ],
89
+ [ 'PASS', '', 'Blank worksheet name' ],
90
+ [ 'PASS', 'Sheet10', 'Valid worksheet name' ],
91
+ [ 'PASS', 'a' * 31, 'Valid 31 char name' ]
92
+ ]
93
+ end
94
+
95
+ def invalid_sheetname
96
+ [
97
+ # Tests for invalid names
98
+ [ 'FAIL', 'Sheet1', 'Caught duplicate name' ],
99
+ [ 'FAIL', 'Sheet2', 'Caught duplicate name' ],
100
+ [ 'FAIL', 'Sheet3', 'Caught duplicate name' ],
101
+ [ 'FAIL', 'sheet1', 'Caught case-insensitive name'],
102
+ [ 'FAIL', 'SHEET1', 'Caught case-insensitive name'],
103
+ [ 'FAIL', 'sheetz', 'Caught case-insensitive name'],
104
+ [ 'FAIL', 'SHEETZ', 'Caught case-insensitive name'],
105
+ [ 'FAIL', 'a' * 32, 'Caught long name' ],
106
+ [ 'FAIL', '[', 'Caught invalid char' ],
107
+ [ 'FAIL', ']', 'Caught invalid char' ],
108
+ [ 'FAIL', ':', 'Caught invalid char' ],
109
+ [ 'FAIL', '*', 'Caught invalid char' ],
110
+ [ 'FAIL', '?', 'Caught invalid char' ],
111
+ [ 'FAIL', '/', 'Caught invalid char' ],
112
+ [ 'FAIL', '\\', 'Caught invalid char' ]
113
+ ]
114
+ end
115
+
116
+ def test_add_format_must_accept_one_or_more_hash_params
117
+ font = {
118
+ :font => 'MS 明朝',
119
+ :size => 12,
120
+ :color => 'blue',
121
+ :bold => 1
122
+ }
123
+ shading = {
124
+ :bg_color => 'green',
125
+ :pattern => 1
126
+ }
127
+ properties = font.merge(shading)
128
+
129
+ format1 = @workbook.add_format(properties)
130
+ format2 = @workbook.add_format(font, shading)
131
+ assert(format_equal?(format1, format2))
132
+ end
133
+
134
+ def format_equal?(f1, f2)
135
+ require 'yaml'
136
+ re = /xf_index: \d+\n/
137
+ YAML.dump(f1).sub(re, '') == YAML.dump(f2).sub(re, '')
138
+ end
139
+ end
@@ -1,110 +1,110 @@
1
- # -*- coding: utf-8 -*-
2
- require 'helper'
3
- require 'stringio'
4
-
5
- class TC_Worksheet < Test::Unit::TestCase
6
- TEST_DIR = File.expand_path(File.dirname(__FILE__))
7
- PERL_OUTDIR = File.join(TEST_DIR, 'perl_output')
8
-
9
- def setup
10
- @test_file = StringIO.new
11
- @workbook = WriteExcel.new(@test_file)
12
- @sheetname = 'test'
13
- @ws = @workbook.add_worksheet(@sheetname, 0)
14
- @perldir = "#{PERL_OUTDIR}/"
15
- @format = Writeexcel::Format.new(:color=>"green")
16
- end
17
-
18
- def teardown
19
- @ws = nil
20
- @format = nil
21
- @workbook.close
22
- end
23
-
24
- def test_methods_exist
25
- assert_respond_to(@ws, :write)
26
- assert_respond_to(@ws, :write_blank)
27
- assert_respond_to(@ws, :write_row)
28
- assert_respond_to(@ws, :write_col)
29
- end
30
-
31
- def test_methods_no_error
32
- assert_nothing_raised{ @ws.write(0,0,nil) }
33
- assert_nothing_raised{ @ws.write(0,0,"Hello") }
34
- assert_nothing_raised{ @ws.write(0,0,888) }
35
- assert_nothing_raised{ @ws.write_row(0,0,["one","two","three"]) }
36
- assert_nothing_raised{ @ws.write_row(0,0,[1,2,3]) }
37
- assert_nothing_raised{ @ws.write_col(0,0,["one","two","three"]) }
38
- assert_nothing_raised{ @ws.write_col(0,0,[1,2,3]) }
39
- assert_nothing_raised{ @ws.write_blank(0,0,nil) }
40
- assert_nothing_raised{ @ws.write_url(0,0,"http://www.ruby-lang.org") }
41
- end
42
-
43
- def test_write_syntax
44
- assert_nothing_raised{@ws.write(0,0,"Hello")}
45
- assert_nothing_raised{@ws.write(0,0,666)}
46
- end
47
-
48
- def test_store_dimensions
49
- file = "delete_this"
50
- File.open(file,"w+"){ |f| f.print @ws.store_dimensions }
51
- pf = @perldir + "ws_store_dimensions"
52
- p_od = IO.readlines(pf).to_s.dump
53
- r_od = IO.readlines(file).to_s.dump
54
- assert_equal_filesize(pf ,file, "Invalid size for store_selection")
55
- assert_equal(p_od, r_od,"Octal dumps are not identical")
56
- File.delete(file)
57
- end
58
-
59
- def test_store_colinfo
60
- file = "delete_this"
61
- File.open(file,"w+"){ |f| f.print @ws.store_colinfo }
62
- pf = @perldir + "ws_store_colinfo"
63
- p_od = IO.readlines(pf).to_s.dump
64
- r_od = IO.readlines(file).to_s.dump
65
- assert_equal_filesize(pf, file, "Invalid size for store_colinfo")
66
- assert_equal(p_od,r_od,"Perl and Ruby octal dumps don't match")
67
- File.delete(file)
68
- end
69
-
70
- def test_store_selection
71
- file = "delete_this"
72
- File.open(file,"w+"){ |f| f.print @ws.store_selection(1,1,2,2) }
73
- pf = @perldir + "ws_store_selection"
74
- p_od = IO.readlines(pf).to_s.dump
75
- r_od = IO.readlines(file).to_s.dump
76
- assert_equal_filesize(pf, file, "Invalid size for store_selection")
77
- assert_equal(p_od, r_od,"Octal dumps are not identical")
78
- File.delete(file)
79
- end
80
-
81
- def test_store_filtermode
82
- file = "delete_this"
83
- File.open(file,"w+"){ |f| f.print @ws.store_filtermode }
84
- pf = @perldir + "ws_store_filtermode_off"
85
- p_od = IO.readlines(pf).to_s.dump
86
- r_od = IO.readlines(file).to_s.dump
87
- assert_equal_filesize(pf, file, "Invalid size for store_filtermode_off")
88
- assert_equal(p_od, r_od,"Octal dumps are not identical")
89
- File.delete(file)
90
-
91
- @ws.autofilter(1,1,2,2)
92
- @ws.filter_column(1, 'x < 2000')
93
- File.open(file,"w+"){ |f| f.print @ws.store_filtermode }
94
- pf = @perldir + "ws_store_filtermode_on"
95
- p_od = IO.readlines(pf).to_s.dump
96
- r_od = IO.readlines(file).to_s.dump
97
- assert_equal_filesize(pf, file, "Invalid size for store_filtermode_off")
98
- assert_equal(p_od, r_od,"Octal dumps are not identical")
99
- File.delete(file)
100
- end
101
-
102
- def test_new
103
- assert_equal(@sheetname, @ws.name)
104
- end
105
-
106
-
107
- def assert_equal_filesize(target, test, msg = "Bad file size")
108
- assert_equal(File.size(target),File.size(test),msg)
109
- end
110
- end
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'stringio'
4
+
5
+ class TC_Worksheet < Test::Unit::TestCase
6
+ TEST_DIR = File.expand_path(File.dirname(__FILE__))
7
+ PERL_OUTDIR = File.join(TEST_DIR, 'perl_output')
8
+
9
+ def setup
10
+ @test_file = StringIO.new
11
+ @workbook = WriteExcel.new(@test_file)
12
+ @sheetname = 'test'
13
+ @ws = @workbook.add_worksheet(@sheetname, 0)
14
+ @perldir = "#{PERL_OUTDIR}/"
15
+ @format = Writeexcel::Format.new(:color=>"green")
16
+ end
17
+
18
+ def teardown
19
+ @ws = nil
20
+ @format = nil
21
+ @workbook.close
22
+ end
23
+
24
+ def test_methods_exist
25
+ assert_respond_to(@ws, :write)
26
+ assert_respond_to(@ws, :write_blank)
27
+ assert_respond_to(@ws, :write_row)
28
+ assert_respond_to(@ws, :write_col)
29
+ end
30
+
31
+ def test_methods_no_error
32
+ assert_nothing_raised{ @ws.write(0,0,nil) }
33
+ assert_nothing_raised{ @ws.write(0,0,"Hello") }
34
+ assert_nothing_raised{ @ws.write(0,0,888) }
35
+ assert_nothing_raised{ @ws.write_row(0,0,["one","two","three"]) }
36
+ assert_nothing_raised{ @ws.write_row(0,0,[1,2,3]) }
37
+ assert_nothing_raised{ @ws.write_col(0,0,["one","two","three"]) }
38
+ assert_nothing_raised{ @ws.write_col(0,0,[1,2,3]) }
39
+ assert_nothing_raised{ @ws.write_blank(0,0,nil) }
40
+ assert_nothing_raised{ @ws.write_url(0,0,"http://www.ruby-lang.org") }
41
+ end
42
+
43
+ def test_write_syntax
44
+ assert_nothing_raised{@ws.write(0,0,"Hello")}
45
+ assert_nothing_raised{@ws.write(0,0,666)}
46
+ end
47
+
48
+ def test_store_dimensions
49
+ file = "delete_this"
50
+ File.open(file,"w+"){ |f| f.print @ws.store_dimensions }
51
+ pf = @perldir + "ws_store_dimensions"
52
+ p_od = IO.readlines(pf).to_s.dump
53
+ r_od = IO.readlines(file).to_s.dump
54
+ assert_equal_filesize(pf ,file, "Invalid size for store_selection")
55
+ assert_equal(p_od, r_od,"Octal dumps are not identical")
56
+ File.delete(file)
57
+ end
58
+
59
+ def test_store_colinfo
60
+ file = "delete_this"
61
+ File.open(file,"w+"){ |f| f.print @ws.store_colinfo }
62
+ pf = @perldir + "ws_store_colinfo"
63
+ p_od = IO.readlines(pf).to_s.dump
64
+ r_od = IO.readlines(file).to_s.dump
65
+ assert_equal_filesize(pf, file, "Invalid size for store_colinfo")
66
+ assert_equal(p_od,r_od,"Perl and Ruby octal dumps don't match")
67
+ File.delete(file)
68
+ end
69
+
70
+ def test_store_selection
71
+ file = "delete_this"
72
+ File.open(file,"w+"){ |f| f.print @ws.store_selection(1,1,2,2) }
73
+ pf = @perldir + "ws_store_selection"
74
+ p_od = IO.readlines(pf).to_s.dump
75
+ r_od = IO.readlines(file).to_s.dump
76
+ assert_equal_filesize(pf, file, "Invalid size for store_selection")
77
+ assert_equal(p_od, r_od,"Octal dumps are not identical")
78
+ File.delete(file)
79
+ end
80
+
81
+ def test_store_filtermode
82
+ file = "delete_this"
83
+ File.open(file,"w+"){ |f| f.print @ws.store_filtermode }
84
+ pf = @perldir + "ws_store_filtermode_off"
85
+ p_od = IO.readlines(pf).to_s.dump
86
+ r_od = IO.readlines(file).to_s.dump
87
+ assert_equal_filesize(pf, file, "Invalid size for store_filtermode_off")
88
+ assert_equal(p_od, r_od,"Octal dumps are not identical")
89
+ File.delete(file)
90
+
91
+ @ws.autofilter(1,1,2,2)
92
+ @ws.filter_column(1, 'x < 2000')
93
+ File.open(file,"w+"){ |f| f.print @ws.store_filtermode }
94
+ pf = @perldir + "ws_store_filtermode_on"
95
+ p_od = IO.readlines(pf).to_s.dump
96
+ r_od = IO.readlines(file).to_s.dump
97
+ assert_equal_filesize(pf, file, "Invalid size for store_filtermode_off")
98
+ assert_equal(p_od, r_od,"Octal dumps are not identical")
99
+ File.delete(file)
100
+ end
101
+
102
+ def test_new
103
+ assert_equal(@sheetname, @ws.name)
104
+ end
105
+
106
+
107
+ def assert_equal_filesize(target, test, msg = "Bad file size")
108
+ assert_equal(File.size(target),File.size(test),msg)
109
+ end
110
+ end
@@ -1,80 +1,80 @@
1
- #!/usr/bin/ruby -w
2
- # -*- coding: utf-8 -*-
3
- require 'stringio'
4
- #
5
- # magic commentを付与する
6
- #
7
-
8
- # カレントディレクトリ以下の.rbファイルパスの配列を返す
9
- def rb_files
10
- Dir.glob("./**/*\.rb")
11
- end
12
-
13
- # カレントディレクトリ以下の.orgファイルパスの配列を返す
14
- def org_files
15
- Dir.glob("./**/*\.org")
16
- end
17
-
18
- # ファイル名を*.orgに変更し、変更後のファイル名を返す
19
- def rename_to_org(file)
20
- orgfile = change_ext_name(file, 'org')
21
- File.rename(file, orgfile)
22
- orgfile
23
- end
24
-
25
- # ファイル名の拡張子を変更した際のフルパスを返す(実際の変更はしない)
26
- def change_ext_name(file, new_ext)
27
- File.join(File.dirname(file), File.basename(file, ".*")) + ".#{new_ext}"
28
- end
29
-
30
- # shebang か
31
- def shebang?(line)
32
- line =~ /^#!.*ruby/ ? true : false
33
- end
34
-
35
- # magic_comment か
36
- def magic_comment?(line)
37
- line =~ /coding[:=]\s*[\w.-]+/ ? true : false
38
- end
39
-
40
- def add_magic_comment(input = nil, output = nil)
41
- input ||= STDIN
42
- output ||= STDOUT
43
-
44
- magic_comment = "# -*- coding: utf-8 -*-\n"
45
- if shebang?(line = input.gets)
46
- output.write(line)
47
- if magic_comment?(line = input.gets)
48
- output.write(line)
49
- else
50
- output.write(magic_comment)
51
- output.write(line)
52
- end
53
- elsif magic_comment?(line)
54
- output.write(line)
55
- else
56
- output.write(magic_comment)
57
- output.write(line)
58
- end
59
- while(line = input.gets)
60
- output.write(line)
61
- end
62
- end
63
-
64
- if $0 == __FILE__
65
-
66
- rb_files.each do |file|
67
- orgfile = rename_to_org(file)
68
- print("#{file}: renamed to #{orgfile}.\n")
69
- io = StringIO.new
70
- File.open(orgfile) do |fin|
71
- File.open(file, 'w') { |fout| add_magic_comment(fin, fout) }
72
- end
73
- print("#{file}: contains magic comment.\n")
74
- end
75
- #
76
- # orgファイルをすべて消すには、以下を有効に。
77
- #
78
- org_files.each { |f| File.unlink(f) }
79
-
80
- end
1
+ #!/usr/bin/ruby -w
2
+ # -*- coding: utf-8 -*-
3
+ require 'stringio'
4
+ #
5
+ # magic commentを付与する
6
+ #
7
+
8
+ # カレントディレクトリ以下の.rbファイルパスの配列を返す
9
+ def rb_files
10
+ Dir.glob("./**/*\.rb")
11
+ end
12
+
13
+ # カレントディレクトリ以下の.orgファイルパスの配列を返す
14
+ def org_files
15
+ Dir.glob("./**/*\.org")
16
+ end
17
+
18
+ # ファイル名を*.orgに変更し、変更後のファイル名を返す
19
+ def rename_to_org(file)
20
+ orgfile = change_ext_name(file, 'org')
21
+ File.rename(file, orgfile)
22
+ orgfile
23
+ end
24
+
25
+ # ファイル名の拡張子を変更した際のフルパスを返す(実際の変更はしない)
26
+ def change_ext_name(file, new_ext)
27
+ File.join(File.dirname(file), File.basename(file, ".*")) + ".#{new_ext}"
28
+ end
29
+
30
+ # shebang か
31
+ def shebang?(line)
32
+ line =~ /^#!.*ruby/ ? true : false
33
+ end
34
+
35
+ # magic_comment か
36
+ def magic_comment?(line)
37
+ line =~ /coding[:=]\s*[\w.-]+/ ? true : false
38
+ end
39
+
40
+ def add_magic_comment(input = nil, output = nil)
41
+ input ||= STDIN
42
+ output ||= STDOUT
43
+
44
+ magic_comment = "# -*- coding: utf-8 -*-\n"
45
+ if shebang?(line = input.gets)
46
+ output.write(line)
47
+ if magic_comment?(line = input.gets)
48
+ output.write(line)
49
+ else
50
+ output.write(magic_comment)
51
+ output.write(line)
52
+ end
53
+ elsif magic_comment?(line)
54
+ output.write(line)
55
+ else
56
+ output.write(magic_comment)
57
+ output.write(line)
58
+ end
59
+ while(line = input.gets)
60
+ output.write(line)
61
+ end
62
+ end
63
+
64
+ if $0 == __FILE__
65
+
66
+ rb_files.each do |file|
67
+ orgfile = rename_to_org(file)
68
+ print("#{file}: renamed to #{orgfile}.\n")
69
+ io = StringIO.new
70
+ File.open(orgfile) do |fin|
71
+ File.open(file, 'w') { |fout| add_magic_comment(fin, fout) }
72
+ end
73
+ print("#{file}: contains magic comment.\n")
74
+ end
75
+ #
76
+ # orgファイルをすべて消すには、以下を有効に。
77
+ #
78
+ org_files.each { |f| File.unlink(f) }
79
+
80
+ end