test/test_21_escher.rb in writeexcel-0.1.0 vs test/test_21_escher.rb in writeexcel-0.3.0
- old
+ new
@@ -1,629 +1,642 @@
-###############################################################################
-#
-# A test for Spreadsheet::WriteExcel.
-#
-# Tests for the internal methods used to write the records in an Escher drawing
-# object such as images, comments and filters.
-#
-# reverse('©'), September 2005, John McNamara, jmcnamara@cpan.org
-#
-# original written in Perl by John McNamara
-# converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
-#
-############################################################################
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
-
-require "test/unit"
-require 'writeexcel'
-
-class TC_escher < Test::Unit::TestCase
-
- def setup
- t = Time.now.strftime("%Y%m%d")
- path = "temp#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
- @test_file = File.join(Dir.tmpdir, path)
- @workbook = Spreadsheet::WriteExcel.new(@test_file)
- @worksheet = @workbook.add_worksheet
- end
-
- def teardown
- @workbook.close
- File.unlink(@test_file) if FileTest.exist?(@test_file)
- end
-
- def test_for_the_generic_method
- data_for_test.each do |data|
- caption = data.shift
- target = data.pop
-
- data[3].gsub!(/ /,'')
- data[3] = [data[3]].pack('H*')
-
- caption = sprintf(" \t_add_mso_generic(): (0x%04X) %s", data[0], caption)
-
- result = unpack_record(@worksheet.add_mso_generic(*data))
-
- assert_equal(target, result, caption)
- end
- end
-
- def test_for_store_mso_dgg_container
- caption = sprintf(" \t_store_mso_dgg_container()")
- target = %w( 0F 00 00 F0 52 00 00 00 ).join(' ')
-
- @workbook.mso_size = 94
- result = unpack_record(@workbook.store_mso_dgg_container)
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_dgg
- caption = sprintf(" \t_store_mso_dgg()")
- data = [ 1026, 2, 2, 1, [[1,2]] ]
- target = %w( 00 00 06 F0
- 18 00 00 00 02 04 00 00 02 00 00 00 02 00 00 00
- 01 00 00 00 01 00 00 00 02 00 00 00
- ).join(' ')
-
- result = unpack_record(@workbook.store_mso_dgg(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_opt
- caption = sprintf(" \t_store_mso_opt()")
- target = %w( 33 00 0B F0
- 12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
- C0 01 40 00 00 08
- ).join(' ')
-
- result = unpack_record(@workbook.store_mso_opt)
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_split_menu_colors
- caption = sprintf(" \t_store_mso_split_menu_colors()")
- target = %w( 40 00 1E F1 10 00 00 00 0D 00
- 00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
- ).join(' ')
-
- result = unpack_record(@workbook.store_mso_split_menu_colors)
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_dg_container
- caption = sprintf(" \t_store_mso_dg_container()")
- data = [0xC8]
- target = %w( 0F 00 02 F0 C8 00 00 00 ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_dg_container(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_dg
- caption = sprintf(" \t_store_mso_dg()")
- data = [1, 2, 1025]
- target = %w( 10 00 08 F0
- 08 00 00 00 02 00 00 00 01 04 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_dg(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_spgr_container
- caption = sprintf(" \t_store_mso_spgr_container()")
- data = [0xB0]
- target = %w(
- 0F 00 03 F0 B0 00 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_spgr_container(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_sp_container
- caption = sprintf(" \t_store_mso_sp_container()")
- data = [0x28]
- target = %w(
- 0F 00 04 F0 28 00 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_sp_container(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_sp
- caption = sprintf(" \t_store_mso_sp()")
- data = [0, 1024, 0x0005]
- target = %w(
- 02 00 0A F0 08 00 00 00 00 04 00 00 05 00 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_sp(*data))
-
- assert_equal(target, result, caption)
-
- data = [202, 1025, 0x0A00]
- target = %w(
- A2 0C 0A F0 08 00 00 00 01 04 00 00 00 0A 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_sp(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_opt_comment
- caption = sprintf(" \t_store_mso_opt_comment()")
- data = [0x80]
- target = %w(
- 93 00 0B F0 36 00 00 00
- 80 00 00 00 00 00 BF 00 08 00 08 00
- 58 01 00 00 00 00 81 01 50 00 00 08 83 01 50 00
- 00 08 BF 01 10 00 11 00 01 02 00 00 00 00 3F 02
- 03 00 03 00 BF 03 02 00 0A 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_opt_comment(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_client_anchor
-
- # A1
- range = 'A1'
- caption = sprintf(" \t_store_mso_client_anchor(%s)", range)
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 00 00
- 1E 00 03 00 F0 00 04 00 78 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
- # A2
- range = 'A2'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 00 00
- 69 00 03 00 F0 00 04 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # A3
- range = 'A3'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 01 00
- 69 00 03 00 F0 00 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # A65534
- range = 'A65534'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 F9 FF
- 3C 00 03 00 F0 00 FD FF 97 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # A65536
- range = 'A65536'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 FB FF
- 1E 00 03 00 F0 00 FF FF 78 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # IT3
- range = 'IT3'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 FA 00 10 03 01 00
- 69 00 FC 00 10 03 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # IU3
- range = 'IU3'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 FB 00 10 03 01 00
- 69 00 FD 00 10 03 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- #
- range = 'IU3'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 FB 00 10 03 01 00
- 69 00 FD 00 10 03 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # IV3
- range = 'IV3'
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00 FC 00 10 03 01 00
- 69 00 FE 00 10 03 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
- end
-
- def test_for_store_mso_client_anchor_where_comment_offsets_have_changed
- range = 'A3'
- caption = sprintf(" \t_store_mso_client_anchor(%s). Cell offsets changes.", range)
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test',
- :x_offset=>18, :y_offset=>9)
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00
- 00 00 03 00 01 00 20 01 01 00 88 00 03 00 20 01
- 05 00 E2 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_client_anchor_where_comment_dimensions_have_changed
- # x_scale, y_scale
- range = 'A3'
- caption = sprintf(" \t_store_mso_client_anchor(%s). Dimensions changes.", range)
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test',
- :x_scale=>3, :y_scale=>2)
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00
- 01 00 F0 00 01 00 69 00 07 00 F0 00 0A 00 1E 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # width, height
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test',
- :width=>385, :height=>149)
- data = data[-1]
- target = %w(
- 00 00 10 F0 12 00 00 00 03 00
- 01 00 F0 00 01 00 69 00 07 00 F0 00 0A 00 1E 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
- end
-
- def test_for_store_mso_client_anchor_where_column_widths_have_changed
- # set_column G:G
- range = 'F3'
- @worksheet.set_column('G:G', 20)
-
- caption = sprintf(" \t_store_mso_client_anchor(%s). Col width changes.", range)
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
-
- target = %w(
- 00 00 10 F0 12 00
- 00 00 03 00 06 00 6A 00 01 00 69 00 06 00 F2 03
- 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # set_column L:O
- range = 'K3'
- @worksheet.set_column('L:O', 4)
-
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
-
- target = %w(
- 00 00 10 F0 12 00
- 00 00 03 00 0B 00 D1 01 01 00 69 00 0F 00 B0 00
- 05 00 C4 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
- end
-
- def test_for_store_mso_client_anchor_where_row_height_have_changed
- # set_row 5 to 8
- range = 'A6'
- @worksheet.set_row(5, 6)
- @worksheet.set_row(6, 6)
- @worksheet.set_row(7, 6)
- @worksheet.set_row(8, 6)
-
- caption = sprintf(" \t_store_mso_client_anchor(%s). Row height changed.", range)
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
-
- target = %w(
- 00 00 10 F0 12 00
- 00 00 03 00 01 00 F0 00 04 00 69 00 03 00 F0 00
- 0A 00 E2 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
-
- # set_row 14
- range = 'A15'
- @worksheet.set_row(14, 60)
-
- caption = sprintf(" \t_store_mso_client_anchor(%s). Row height changed.", range)
- data = @worksheet.substitute_cellref(range)
- data = @worksheet.comment_params(data[0], data[1], 'Test')
- data = data[-1]
-
- target = %w(
- 00 00 10 F0 12 00
- 00 00 03 00 01 00 F0 00 0D 00 69 00 03 00 F0 00
- 0E 00 CD 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
-
- assert_equal(target, result, caption)
-
- end
-
- def test_for_store_mso_client_data
- caption = sprintf(" \t_store_mso_client_data")
- target = %w(
- 00 00 11 F0 00 00 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_data)
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_obj_comment
- caption = sprintf(" \t_store_obj_comment")
- data = [0x01]
- target = %w(
- 5D 00 34 00 15 00 12 00 19 00 01 00 11 40 00 00
- 00 00 00 00 00 00 00 00 00 00 0D 00 16 00 00 00
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_obj_comment(*data))
-
- assert_equal(target, result, caption)
- end
-
- def test_for_store_mso_client_text_box
- caption = sprintf(" \t_store_mso_client_text_box")
- target = %w(
- 00 00 0D F0 00 00 00 00
- ).join(' ')
-
- result = unpack_record(@worksheet.store_mso_client_text_box)
-
- assert_equal(target, result, caption)
- end
-
- ###############################################################################
- #
- # Unpack the binary data into a format suitable for printing in tests.
- #
- def unpack_record(data)
- data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
- end
-
- def data_for_test
- return [
- [ 'DggContainer', # Caption
- 0xF000, # Type
- 15, # Version
- 0, # Instance
- '', # Data
- 82, # Length
- '0F 00 00 F0 52 00 00 00', # Target
- ],
-
- [ 'DgContainer', # Caption
- 0xF002, # Type
- 15, # Version
- 0, # Instance
- '', # Data
- 328, # Length
- '0F 00 02 F0 48 01 00 00', # Target
- ],
-
- [ 'SpgrContainer', # Caption
- 0xF003, # Type
- 15, # Version
- 0, # Instance
- '', # Data
- 304, # Length
- '0F 00 03 F0 30 01 00 00', # Target
- ],
-
- [ 'SpContainer', # Caption
- 0xF004, # Type
- 15, # Version
- 0, # Instance
- '', # Data
- 40, # Length
- '0F 00 04 F0 28 00 00 00', # Target
- ],
-
- [ 'Dgg', # Caption
- 0xF006, # Type
- 0, # Version
- 0, # Instance
- '02 04 00 00 02 00 00 00 ' + # Data
- '02 00 00 00 01 00 00 00 ' +
- '01 00 00 00 02 00 00 00',
- nil, # Length
- '00 00 06 F0 18 00 00 00 ' + # Target
- '02 04 00 00 02 00 00 00 ' +
- '02 00 00 00 01 00 00 00 ' +
- '01 00 00 00 02 00 00 00',
- ],
-
- [ 'Dg', # Caption
- 0xF008, # Type
- 0, # Version
- 1, # Instance
- '03 00 00 00 02 04 00 00', # Data
- nil, # Length
- '10 00 08 F0 08 00 00 00 ' + # Target
- '03 00 00 00 02 04 00 00',
- ],
-
- [ 'Spgr', # Caption
- 0xF009, # Type
- 1, # Version
- 0, # Instance
- '00 0E 00 0E 40 41 00 00 ' + # Data
- '00 0E 00 0E 40 41 00 00',
- nil, # Length
- '01 00 09 F0 10 00 00 00 ' + # Target
- '00 0E 00 0E 40 41 00 00 ' +
- '00 0E 00 0E 40 41 00 00',
- ],
-
- [ 'ClientTextbox', # Caption
- 0xF00D, # Type
- 0, # Version
- 0, # Instance
- '', # Data
- nil, # Length
- '00 00 0D F0 00 00 00 00', # Target
- ],
-
- [ 'ClientAnchor', # Caption
- 0xF010, # Type
- 0, # Version
- 0, # Instance
- '03 00 01 00 F0 00 01 00 ' + # Data
- '69 00 03 00 F0 00 05 00 ' +
- 'C4 00',
- nil, # Length
- '00 00 10 F0 12 00 00 00 ' + # Target
- '03 00 01 00 F0 00 01 00 ' +
- '69 00 03 00 F0 00 05 00 ' +
- 'C4 00',
- ],
-
- [ 'ClientData', # Caption
- 0xF011, # Type
- 0, # Version
- 0, # Instance
- '', # Data
- nil, # Length
- '00 00 11 F0 00 00 00 00', # Target
- ],
-
- [ 'SplitMenuColors', # Caption
- 0xF11E, # Type
- 0, # Version
- 4, # Instance
- '0D 00 00 08 0C 00 00 08 ' + # Data
- '17 00 00 08 F7 00 00 10',
- nil, # Length
- '40 00 1E F1 10 00 00 00 ' + # Target
- '0D 00 00 08 0C 00 00 08 ' +
- '17 00 00 08 F7 00 00 10',
- ],
-
- [ 'BstoreContainer', # Caption
- 0xF001, # Type
- 15, # Version
- 1, # Instance
- '', # Data
- 163, # Length
- '1F 00 01 F0 A3 00 00 00', # Target
- ],
- ]
- end
-
-end
+###############################################################################
+#
+# A test for WriteExcel.
+#
+#
+# all test is commented out because Workbook#add_mso_... was set to private
+# method. Before that, all test passed.
+#
+#
+#
+#
+# Tests for the internal methods used to write the records in an Escher drawing
+# object such as images, comments and filters.
+#
+# reverse('©'), September 2005, John McNamara, jmcnamara@cpan.org
+#
+# original written in Perl by John McNamara
+# converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
+#
+############################################################################
+$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
+
+require "test/unit"
+require 'writeexcel'
+
+class TC_escher < Test::Unit::TestCase
+
+ def setup
+ t = Time.now.strftime("%Y%m%d")
+ path = "temp#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
+ @test_file = File.join(Dir.tmpdir, path)
+ @workbook = WriteExcel.new(@test_file)
+ @worksheet = @workbook.add_worksheet
+ end
+
+ def teardown
+ @workbook.close
+ File.unlink(@test_file) if FileTest.exist?(@test_file)
+ end
+
+ def test_dummy
+ assert(true)
+ end
+
+=begin
+ def test_for_the_generic_method
+ data_for_test.each do |data|
+ caption = data.shift
+ target = data.pop
+
+ data[3].gsub!(/ /,'')
+ data[3] = [data[3]].pack('H*')
+
+ caption = sprintf(" \t_add_mso_generic(): (0x%04X) %s", data[0], caption)
+
+ result = unpack_record(@worksheet.add_mso_generic(*data))
+
+ assert_equal(target, result, caption)
+ end
+ end
+
+ def test_for_store_mso_dgg_container
+ caption = sprintf(" \t_store_mso_dgg_container()")
+ target = %w( 0F 00 00 F0 52 00 00 00 ).join(' ')
+
+ @workbook.mso_size = 94
+ result = unpack_record(@workbook.store_mso_dgg_container)
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_dgg
+ caption = sprintf(" \t_store_mso_dgg()")
+ data = [ 1026, 2, 2, 1, [[1,2]] ]
+ target = %w( 00 00 06 F0
+ 18 00 00 00 02 04 00 00 02 00 00 00 02 00 00 00
+ 01 00 00 00 01 00 00 00 02 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@workbook.store_mso_dgg(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_opt
+ caption = sprintf(" \t_store_mso_opt()")
+ target = %w( 33 00 0B F0
+ 12 00 00 00 BF 00 08 00 08 00 81 01 09 00 00 08
+ C0 01 40 00 00 08
+ ).join(' ')
+
+ result = unpack_record(@workbook.store_mso_opt)
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_split_menu_colors
+ caption = sprintf(" \t_store_mso_split_menu_colors()")
+ target = %w( 40 00 1E F1 10 00 00 00 0D 00
+ 00 08 0C 00 00 08 17 00 00 08 F7 00 00 10
+ ).join(' ')
+
+ result = unpack_record(@workbook.store_mso_split_menu_colors)
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_dg_container
+ caption = sprintf(" \t_store_mso_dg_container()")
+ data = [0xC8]
+ target = %w( 0F 00 02 F0 C8 00 00 00 ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_dg_container(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_dg
+ caption = sprintf(" \t_store_mso_dg()")
+ data = [1, 2, 1025]
+ target = %w( 10 00 08 F0
+ 08 00 00 00 02 00 00 00 01 04 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_dg(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_spgr_container
+ caption = sprintf(" \t_store_mso_spgr_container()")
+ data = [0xB0]
+ target = %w(
+ 0F 00 03 F0 B0 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_spgr_container(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_sp_container
+ caption = sprintf(" \t_store_mso_sp_container()")
+ data = [0x28]
+ target = %w(
+ 0F 00 04 F0 28 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_sp_container(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_sp
+ caption = sprintf(" \t_store_mso_sp()")
+ data = [0, 1024, 0x0005]
+ target = %w(
+ 02 00 0A F0 08 00 00 00 00 04 00 00 05 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_sp(*data))
+
+ assert_equal(target, result, caption)
+
+ data = [202, 1025, 0x0A00]
+ target = %w(
+ A2 0C 0A F0 08 00 00 00 01 04 00 00 00 0A 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_sp(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_opt_comment
+ caption = sprintf(" \t_store_mso_opt_comment()")
+ data = [0x80]
+ target = %w(
+ 93 00 0B F0 36 00 00 00
+ 80 00 00 00 00 00 BF 00 08 00 08 00
+ 58 01 00 00 00 00 81 01 50 00 00 08 83 01 50 00
+ 00 08 BF 01 10 00 11 00 01 02 00 00 00 00 3F 02
+ 03 00 03 00 BF 03 02 00 0A 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_opt_comment(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_client_anchor
+
+ # A1
+ range = 'A1'
+ caption = sprintf(" \t_store_mso_client_anchor(%s)", range)
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 00 00
+ 1E 00 03 00 F0 00 04 00 78 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+ # A2
+ range = 'A2'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 00 00
+ 69 00 03 00 F0 00 04 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # A3
+ range = 'A3'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 01 00
+ 69 00 03 00 F0 00 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # A65534
+ range = 'A65534'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 F9 FF
+ 3C 00 03 00 F0 00 FD FF 97 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # A65536
+ range = 'A65536'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 01 00 F0 00 FB FF
+ 1E 00 03 00 F0 00 FF FF 78 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # IT3
+ range = 'IT3'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 FA 00 10 03 01 00
+ 69 00 FC 00 10 03 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # IU3
+ range = 'IU3'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 FB 00 10 03 01 00
+ 69 00 FD 00 10 03 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ #
+ range = 'IU3'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 FB 00 10 03 01 00
+ 69 00 FD 00 10 03 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # IV3
+ range = 'IV3'
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00 FC 00 10 03 01 00
+ 69 00 FE 00 10 03 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+ end
+
+ def test_for_store_mso_client_anchor_where_comment_offsets_have_changed
+ range = 'A3'
+ caption = sprintf(" \t_store_mso_client_anchor(%s). Cell offsets changes.", range)
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test',
+ :x_offset=>18, :y_offset=>9)
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00
+ 00 00 03 00 01 00 20 01 01 00 88 00 03 00 20 01
+ 05 00 E2 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_client_anchor_where_comment_dimensions_have_changed
+ # x_scale, y_scale
+ range = 'A3'
+ caption = sprintf(" \t_store_mso_client_anchor(%s). Dimensions changes.", range)
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test',
+ :x_scale=>3, :y_scale=>2)
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00
+ 01 00 F0 00 01 00 69 00 07 00 F0 00 0A 00 1E 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # width, height
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test',
+ :width=>384, :height=>148)
+ data = data[-1]
+ target = %w(
+ 00 00 10 F0 12 00 00 00 03 00
+ 01 00 F0 00 01 00 69 00 07 00 F0 00 0A 00 1E 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+ end
+
+ def test_for_store_mso_client_anchor_where_column_widths_have_changed
+ # set_column G:G
+ range = 'F3'
+ @worksheet.set_column('G:G', 20)
+
+ caption = sprintf(" \t_store_mso_client_anchor(%s). Col width changes.", range)
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+
+ target = %w(
+ 00 00 10 F0 12 00
+ 00 00 03 00 06 00 6A 00 01 00 69 00 06 00 F2 03
+ 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # set_column L:O
+ range = 'K3'
+ @worksheet.set_column('L:O', 4)
+
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+
+ target = %w(
+ 00 00 10 F0 12 00
+ 00 00 03 00 0B 00 D1 01 01 00 69 00 0F 00 B0 00
+ 05 00 C4 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+ end
+
+ def test_for_store_mso_client_anchor_where_row_height_have_changed
+ # set_row 5 to 8
+ range = 'A6'
+ @worksheet.set_row(5, 6)
+ @worksheet.set_row(6, 6)
+ @worksheet.set_row(7, 6)
+ @worksheet.set_row(8, 6)
+
+ caption = sprintf(" \t_store_mso_client_anchor(%s). Row height changed.", range)
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+
+ target = %w(
+ 00 00 10 F0 12 00
+ 00 00 03 00 01 00 F0 00 04 00 69 00 03 00 F0 00
+ 0A 00 E2 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+
+ # set_row 14
+ range = 'A15'
+ @worksheet.set_row(14, 60)
+
+ caption = sprintf(" \t_store_mso_client_anchor(%s). Row height changed.", range)
+ data = @worksheet.substitute_cellref(range)
+ data = @worksheet.comment_params(data[0], data[1], 'Test')
+ data = data[-1]
+
+ target = %w(
+ 00 00 10 F0 12 00
+ 00 00 03 00 01 00 F0 00 0D 00 69 00 03 00 F0 00
+ 0E 00 CD 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_anchor(3, *data))
+
+ assert_equal(target, result, caption)
+
+ end
+
+ def test_for_store_mso_client_data
+ caption = sprintf(" \t_store_mso_client_data")
+ target = %w(
+ 00 00 11 F0 00 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_data)
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_obj_comment
+ caption = sprintf(" \t_store_obj_comment")
+ data = [0x01]
+ target = %w(
+ 5D 00 34 00 15 00 12 00 19 00 01 00 11 40 00 00
+ 00 00 00 00 00 00 00 00 00 00 0D 00 16 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_obj_comment(*data))
+
+ assert_equal(target, result, caption)
+ end
+
+ def test_for_store_mso_client_text_box
+ caption = sprintf(" \t_store_mso_client_text_box")
+ target = %w(
+ 00 00 0D F0 00 00 00 00
+ ).join(' ')
+
+ result = unpack_record(@worksheet.store_mso_client_text_box)
+
+ assert_equal(target, result, caption)
+ end
+=end
+
+ ###############################################################################
+ #
+ # Unpack the binary data into a format suitable for printing in tests.
+ #
+ def unpack_record(data)
+ data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
+ end
+
+ def data_for_test
+ return [
+ [ 'DggContainer', # Caption
+ 0xF000, # Type
+ 15, # Version
+ 0, # Instance
+ '', # Data
+ 82, # Length
+ '0F 00 00 F0 52 00 00 00', # Target
+ ],
+
+ [ 'DgContainer', # Caption
+ 0xF002, # Type
+ 15, # Version
+ 0, # Instance
+ '', # Data
+ 328, # Length
+ '0F 00 02 F0 48 01 00 00', # Target
+ ],
+
+ [ 'SpgrContainer', # Caption
+ 0xF003, # Type
+ 15, # Version
+ 0, # Instance
+ '', # Data
+ 304, # Length
+ '0F 00 03 F0 30 01 00 00', # Target
+ ],
+
+ [ 'SpContainer', # Caption
+ 0xF004, # Type
+ 15, # Version
+ 0, # Instance
+ '', # Data
+ 40, # Length
+ '0F 00 04 F0 28 00 00 00', # Target
+ ],
+
+ [ 'Dgg', # Caption
+ 0xF006, # Type
+ 0, # Version
+ 0, # Instance
+ '02 04 00 00 02 00 00 00 ' + # Data
+ '02 00 00 00 01 00 00 00 ' +
+ '01 00 00 00 02 00 00 00',
+ nil, # Length
+ '00 00 06 F0 18 00 00 00 ' + # Target
+ '02 04 00 00 02 00 00 00 ' +
+ '02 00 00 00 01 00 00 00 ' +
+ '01 00 00 00 02 00 00 00',
+ ],
+
+ [ 'Dg', # Caption
+ 0xF008, # Type
+ 0, # Version
+ 1, # Instance
+ '03 00 00 00 02 04 00 00', # Data
+ nil, # Length
+ '10 00 08 F0 08 00 00 00 ' + # Target
+ '03 00 00 00 02 04 00 00',
+ ],
+
+ [ 'Spgr', # Caption
+ 0xF009, # Type
+ 1, # Version
+ 0, # Instance
+ '00 0E 00 0E 40 41 00 00 ' + # Data
+ '00 0E 00 0E 40 41 00 00',
+ nil, # Length
+ '01 00 09 F0 10 00 00 00 ' + # Target
+ '00 0E 00 0E 40 41 00 00 ' +
+ '00 0E 00 0E 40 41 00 00',
+ ],
+
+ [ 'ClientTextbox', # Caption
+ 0xF00D, # Type
+ 0, # Version
+ 0, # Instance
+ '', # Data
+ nil, # Length
+ '00 00 0D F0 00 00 00 00', # Target
+ ],
+
+ [ 'ClientAnchor', # Caption
+ 0xF010, # Type
+ 0, # Version
+ 0, # Instance
+ '03 00 01 00 F0 00 01 00 ' + # Data
+ '69 00 03 00 F0 00 05 00 ' +
+ 'C4 00',
+ nil, # Length
+ '00 00 10 F0 12 00 00 00 ' + # Target
+ '03 00 01 00 F0 00 01 00 ' +
+ '69 00 03 00 F0 00 05 00 ' +
+ 'C4 00',
+ ],
+
+ [ 'ClientData', # Caption
+ 0xF011, # Type
+ 0, # Version
+ 0, # Instance
+ '', # Data
+ nil, # Length
+ '00 00 11 F0 00 00 00 00', # Target
+ ],
+
+ [ 'SplitMenuColors', # Caption
+ 0xF11E, # Type
+ 0, # Version
+ 4, # Instance
+ '0D 00 00 08 0C 00 00 08 ' + # Data
+ '17 00 00 08 F7 00 00 10',
+ nil, # Length
+ '40 00 1E F1 10 00 00 00 ' + # Target
+ '0D 00 00 08 0C 00 00 08 ' +
+ '17 00 00 08 F7 00 00 10',
+ ],
+
+ [ 'BstoreContainer', # Caption
+ 0xF001, # Type
+ 15, # Version
+ 1, # Instance
+ '', # Data
+ 163, # Length
+ '1F 00 01 F0 A3 00 00 00', # Target
+ ],
+ ]
+ end
+
+end