writeexcel 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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