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,235 +1,235 @@
1
- # -*- coding: utf-8 -*-
2
- ##########################################################################
3
- # test_41_properties.rb
4
- #
5
- # Tests for OLE property sets.
6
- #
7
- # reverse('©'), September 2005, John McNamara, jmcnamara@cpan.org
8
- #
9
- # original written in Perl by John McNamara
10
- # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
11
- #
12
- #########################################################################
13
- require 'helper'
14
-
15
- class TC_properties < Test::Unit::TestCase
16
-
17
- def setup
18
- @smiley = '☺' # chr 0x263A; in perl
19
- end
20
-
21
- def test_codepage_only
22
- properties = [[0x0001, 'VT_I2', 0x04E4]]
23
- caption = " \tDoc properties: _create_property_set('Code page')"
24
- target = %w(
25
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
26
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
27
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
28
- 18 00 00 00 01 00 00 00 01 00 00 00 10 00 00 00
29
- 02 00 00 00 E4 04 00 00
30
- ).join(' ')
31
-
32
- result = unpack_record( create_summary_property_set(properties))
33
- assert_equal(target, result, caption)
34
- end
35
-
36
- def test_same_as_previous_plus_title
37
- properties = [
38
- [0x0001, 'VT_I2', 0x04E4 ],
39
- [0x0002, 'VT_LPSTR', 'Title'],
40
- ]
41
- caption = " \tDoc properties: _create_property_set('+ Title')"
42
- target = %w(
43
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
44
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
45
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
46
- 30 00 00 00 02 00 00 00 01 00 00 00 18 00 00 00
47
- 02 00 00 00 20 00 00 00 02 00 00 00 E4 04 00 00
48
- 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
49
- ).join(' ')
50
-
51
- result = unpack_record( create_summary_property_set(properties))
52
- assert_equal(target, result, caption)
53
- end
54
-
55
- def test_same_as_previous_plus_subject
56
- properties = [
57
- [0x0001, 'VT_I2', 0x04E4 ],
58
- [0x0002, 'VT_LPSTR', 'Title'],
59
- [0x0003, 'VT_LPSTR', 'Subject'],
60
- ]
61
- caption = " \tDoc properties: _create_property_set('+ Subject')"
62
- target = %w(
63
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
64
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
65
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
66
- 48 00 00 00 03 00 00 00 01 00 00 00 20 00 00 00
67
- 02 00 00 00 28 00 00 00 03 00 00 00 38 00 00 00
68
- 02 00 00 00 E4 04 00 00 1E 00 00 00 06 00 00 00
69
- 54 69 74 6C 65 00 00 00 1E 00 00 00 08 00 00 00
70
- 53 75 62 6A 65 63 74 00
71
- ).join(' ')
72
-
73
- result = unpack_record( create_summary_property_set(properties))
74
- assert_equal(target, result, caption)
75
- end
76
-
77
- def test_same_as_previous_plus_author
78
- properties = [
79
- [0x0001, 'VT_I2', 0x04E4 ],
80
- [0x0002, 'VT_LPSTR', 'Title'],
81
- [0x0003, 'VT_LPSTR', 'Subject'],
82
- [0x0004, 'VT_LPSTR', 'Author' ],
83
- ]
84
- caption = " \tDoc properties: _create_property_set('+ Keywords')"
85
- target = %w(
86
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
87
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
88
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
89
- 60 00 00 00 04 00 00 00 01 00 00 00 28 00 00 00
90
- 02 00 00 00 30 00 00 00 03 00 00 00 40 00 00 00
91
- 04 00 00 00 50 00 00 00 02 00 00 00 E4 04 00 00
92
- 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
93
- 1E 00 00 00 08 00 00 00 53 75 62 6A 65 63 74 00
94
- 1E 00 00 00 07 00 00 00 41 75 74 68 6F 72 00 00
95
- ).join(' ')
96
-
97
- result = unpack_record( create_summary_property_set(properties))
98
- assert_equal(target, result, caption)
99
- end
100
-
101
- def test_same_as_previous_plus_keywords
102
- properties = [
103
- [0x0001, 'VT_I2', 0x04E4 ],
104
- [0x0002, 'VT_LPSTR', 'Title'],
105
- [0x0003, 'VT_LPSTR', 'Subject'],
106
- [0x0004, 'VT_LPSTR', 'Author' ],
107
- [0x0005, 'VT_LPSTR', 'Keywords'],
108
- ]
109
- caption = " \tDoc properties: _create_property_set('+ Keywords')"
110
- target = %w(
111
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
112
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
113
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
114
- 7C 00 00 00 05 00 00 00 01 00 00 00 30 00 00 00
115
- 02 00 00 00 38 00 00 00 03 00 00 00 48 00 00 00
116
- 04 00 00 00 58 00 00 00 05 00 00 00 68 00 00 00
117
- 02 00 00 00 E4 04 00 00 1E 00 00 00 06 00 00 00
118
- 54 69 74 6C 65 00 00 00 1E 00 00 00 08 00 00 00
119
- 53 75 62 6A 65 63 74 00 1E 00 00 00 07 00 00 00
120
- 41 75 74 68 6F 72 00 00 1E 00 00 00 09 00 00 00
121
- 4B 65 79 77 6F 72 64 73 00 00 00 00
122
- ).join(' ')
123
-
124
- result = unpack_record( create_summary_property_set(properties))
125
- assert_equal(target, result, caption)
126
- end
127
-
128
- def test_same_as_previous_plus_comments
129
- properties = [
130
- [0x0001, 'VT_I2', 0x04E4 ],
131
- [0x0002, 'VT_LPSTR', 'Title'],
132
- [0x0003, 'VT_LPSTR', 'Subject'],
133
- [0x0004, 'VT_LPSTR', 'Author' ],
134
- [0x0005, 'VT_LPSTR', 'Keywords'],
135
- [0x0006, 'VT_LPSTR', 'Comments'],
136
- ]
137
- caption = " \tDoc properties: _create_property_set('+ Comments')"
138
- target = %w(
139
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
140
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
141
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
142
- 98 00 00 00 06 00 00 00 01 00 00 00 38 00 00 00
143
- 02 00 00 00 40 00 00 00 03 00 00 00 50 00 00 00
144
- 04 00 00 00 60 00 00 00 05 00 00 00 70 00 00 00
145
- 06 00 00 00 84 00 00 00 02 00 00 00 E4 04 00 00
146
- 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
147
- 1E 00 00 00 08 00 00 00 53 75 62 6A 65 63 74 00
148
- 1E 00 00 00 07 00 00 00 41 75 74 68 6F 72 00 00
149
- 1E 00 00 00 09 00 00 00 4B 65 79 77 6F 72 64 73
150
- 00 00 00 00 1E 00 00 00 09 00 00 00 43 6F 6D 6D
151
- 65 6E 74 73 00 00 00 00
152
- ).join(' ')
153
-
154
- result = unpack_record( create_summary_property_set(properties))
155
- assert_equal(target, result, caption)
156
- end
157
-
158
- def test_same_as_previous_plus_last_author
159
- properties = [
160
- [0x0001, 'VT_I2', 0x04E4 ],
161
- [0x0002, 'VT_LPSTR', 'Title'],
162
- [0x0003, 'VT_LPSTR', 'Subject'],
163
- [0x0004, 'VT_LPSTR', 'Author' ],
164
- [0x0005, 'VT_LPSTR', 'Keywords'],
165
- [0x0006, 'VT_LPSTR', 'Comments'],
166
- [0x0008, 'VT_LPSTR', 'Username'],
167
- ]
168
- caption = " \tDoc properties: _create_property_set('+ Comments')"
169
- target = %w(
170
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
171
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
172
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
173
- B4 00 00 00 07 00 00 00 01 00 00 00 40 00 00 00
174
- 02 00 00 00 48 00 00 00 03 00 00 00 58 00 00 00
175
- 04 00 00 00 68 00 00 00 05 00 00 00 78 00 00 00
176
- 06 00 00 00 8C 00 00 00 08 00 00 00 A0 00 00 00
177
- 02 00 00 00 E4 04 00 00 1E 00 00 00 06 00 00 00
178
- 54 69 74 6C 65 00 00 00 1E 00 00 00 08 00 00 00
179
- 53 75 62 6A 65 63 74 00 1E 00 00 00 07 00 00 00
180
- 41 75 74 68 6F 72 00 00 1E 00 00 00 09 00 00 00
181
- 4B 65 79 77 6F 72 64 73 00 00 00 00 1E 00 00 00
182
- 09 00 00 00 43 6F 6D 6D 65 6E 74 73 00 00 00 00
183
- 1E 00 00 00 09 00 00 00 55 73 65 72 6E 61 6D 65
184
- 00 00 00 00
185
- ).join(' ')
186
-
187
- result = unpack_record( create_summary_property_set(properties))
188
- assert_equal(target, result, caption)
189
- end
190
-
191
- def test_same_as_previous_plus_creation_date
192
- filetime = Time.gm(2008,8,19,23,20,13)
193
- properties = [
194
- [0x0001, 'VT_I2', 0x04E4 ],
195
- [0x0002, 'VT_LPSTR', 'Title'],
196
- [0x0003, 'VT_LPSTR', 'Subject'],
197
- [0x0004, 'VT_LPSTR', 'Author' ],
198
- [0x0005, 'VT_LPSTR', 'Keywords'],
199
- [0x0006, 'VT_LPSTR', 'Comments'],
200
- [0x0008, 'VT_LPSTR', 'Username'],
201
- [0x000C, 'VT_FILETIME', filetime ],
202
- ]
203
- caption = " \tDoc properties: _create_property_set('+ Comments')"
204
- target = %w(
205
- FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
206
- 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
207
- F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
208
- C8 00 00 00 08 00 00 00 01 00 00 00 48 00 00 00
209
- 02 00 00 00 50 00 00 00 03 00 00 00 60 00 00 00
210
- 04 00 00 00 70 00 00 00 05 00 00 00 80 00 00 00
211
- 06 00 00 00 94 00 00 00 08 00 00 00 A8 00 00 00
212
- 0C 00 00 00 BC 00 00 00 02 00 00 00 E4 04 00 00
213
- 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
214
- 1E 00 00 00 08 00 00 00 53 75 62 6A 65 63 74 00
215
- 1E 00 00 00 07 00 00 00 41 75 74 68 6F 72 00 00
216
- 1E 00 00 00 09 00 00 00 4B 65 79 77 6F 72 64 73
217
- 00 00 00 00 1E 00 00 00 09 00 00 00 43 6F 6D 6D
218
- 65 6E 74 73 00 00 00 00 1E 00 00 00 09 00 00 00
219
- 55 73 65 72 6E 61 6D 65 00 00 00 00 40 00 00 00
220
- 80 74 89 21 52 02 C9 01
221
- ).join(' ')
222
-
223
- result = unpack_record( create_summary_property_set(properties))
224
- assert_equal(target, result, caption)
225
- end
226
-
227
- ###############################################################################
228
- #
229
- # Unpack the binary data into a format suitable for printing in tests.
230
- #
231
- def unpack_record(data)
232
- data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
233
- end
234
-
235
- end
1
+ # -*- coding: utf-8 -*-
2
+ ##########################################################################
3
+ # test_41_properties.rb
4
+ #
5
+ # Tests for OLE property sets.
6
+ #
7
+ # reverse('©'), September 2005, John McNamara, jmcnamara@cpan.org
8
+ #
9
+ # original written in Perl by John McNamara
10
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
11
+ #
12
+ #########################################################################
13
+ require 'helper'
14
+
15
+ class TC_properties < Test::Unit::TestCase
16
+
17
+ def setup
18
+ @smiley = '☺' # chr 0x263A; in perl
19
+ end
20
+
21
+ def test_codepage_only
22
+ properties = [[0x0001, 'VT_I2', 0x04E4]]
23
+ caption = " \tDoc properties: _create_property_set('Code page')"
24
+ target = %w(
25
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
26
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
27
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
28
+ 18 00 00 00 01 00 00 00 01 00 00 00 10 00 00 00
29
+ 02 00 00 00 E4 04 00 00
30
+ ).join(' ')
31
+
32
+ result = unpack_record( create_summary_property_set(properties))
33
+ assert_equal(target, result, caption)
34
+ end
35
+
36
+ def test_same_as_previous_plus_title
37
+ properties = [
38
+ [0x0001, 'VT_I2', 0x04E4 ],
39
+ [0x0002, 'VT_LPSTR', 'Title'],
40
+ ]
41
+ caption = " \tDoc properties: _create_property_set('+ Title')"
42
+ target = %w(
43
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
44
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
45
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
46
+ 30 00 00 00 02 00 00 00 01 00 00 00 18 00 00 00
47
+ 02 00 00 00 20 00 00 00 02 00 00 00 E4 04 00 00
48
+ 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
49
+ ).join(' ')
50
+
51
+ result = unpack_record( create_summary_property_set(properties))
52
+ assert_equal(target, result, caption)
53
+ end
54
+
55
+ def test_same_as_previous_plus_subject
56
+ properties = [
57
+ [0x0001, 'VT_I2', 0x04E4 ],
58
+ [0x0002, 'VT_LPSTR', 'Title'],
59
+ [0x0003, 'VT_LPSTR', 'Subject'],
60
+ ]
61
+ caption = " \tDoc properties: _create_property_set('+ Subject')"
62
+ target = %w(
63
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
64
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
65
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
66
+ 48 00 00 00 03 00 00 00 01 00 00 00 20 00 00 00
67
+ 02 00 00 00 28 00 00 00 03 00 00 00 38 00 00 00
68
+ 02 00 00 00 E4 04 00 00 1E 00 00 00 06 00 00 00
69
+ 54 69 74 6C 65 00 00 00 1E 00 00 00 08 00 00 00
70
+ 53 75 62 6A 65 63 74 00
71
+ ).join(' ')
72
+
73
+ result = unpack_record( create_summary_property_set(properties))
74
+ assert_equal(target, result, caption)
75
+ end
76
+
77
+ def test_same_as_previous_plus_author
78
+ properties = [
79
+ [0x0001, 'VT_I2', 0x04E4 ],
80
+ [0x0002, 'VT_LPSTR', 'Title'],
81
+ [0x0003, 'VT_LPSTR', 'Subject'],
82
+ [0x0004, 'VT_LPSTR', 'Author' ],
83
+ ]
84
+ caption = " \tDoc properties: _create_property_set('+ Keywords')"
85
+ target = %w(
86
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
87
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
88
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
89
+ 60 00 00 00 04 00 00 00 01 00 00 00 28 00 00 00
90
+ 02 00 00 00 30 00 00 00 03 00 00 00 40 00 00 00
91
+ 04 00 00 00 50 00 00 00 02 00 00 00 E4 04 00 00
92
+ 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
93
+ 1E 00 00 00 08 00 00 00 53 75 62 6A 65 63 74 00
94
+ 1E 00 00 00 07 00 00 00 41 75 74 68 6F 72 00 00
95
+ ).join(' ')
96
+
97
+ result = unpack_record( create_summary_property_set(properties))
98
+ assert_equal(target, result, caption)
99
+ end
100
+
101
+ def test_same_as_previous_plus_keywords
102
+ properties = [
103
+ [0x0001, 'VT_I2', 0x04E4 ],
104
+ [0x0002, 'VT_LPSTR', 'Title'],
105
+ [0x0003, 'VT_LPSTR', 'Subject'],
106
+ [0x0004, 'VT_LPSTR', 'Author' ],
107
+ [0x0005, 'VT_LPSTR', 'Keywords'],
108
+ ]
109
+ caption = " \tDoc properties: _create_property_set('+ Keywords')"
110
+ target = %w(
111
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
112
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
113
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
114
+ 7C 00 00 00 05 00 00 00 01 00 00 00 30 00 00 00
115
+ 02 00 00 00 38 00 00 00 03 00 00 00 48 00 00 00
116
+ 04 00 00 00 58 00 00 00 05 00 00 00 68 00 00 00
117
+ 02 00 00 00 E4 04 00 00 1E 00 00 00 06 00 00 00
118
+ 54 69 74 6C 65 00 00 00 1E 00 00 00 08 00 00 00
119
+ 53 75 62 6A 65 63 74 00 1E 00 00 00 07 00 00 00
120
+ 41 75 74 68 6F 72 00 00 1E 00 00 00 09 00 00 00
121
+ 4B 65 79 77 6F 72 64 73 00 00 00 00
122
+ ).join(' ')
123
+
124
+ result = unpack_record( create_summary_property_set(properties))
125
+ assert_equal(target, result, caption)
126
+ end
127
+
128
+ def test_same_as_previous_plus_comments
129
+ properties = [
130
+ [0x0001, 'VT_I2', 0x04E4 ],
131
+ [0x0002, 'VT_LPSTR', 'Title'],
132
+ [0x0003, 'VT_LPSTR', 'Subject'],
133
+ [0x0004, 'VT_LPSTR', 'Author' ],
134
+ [0x0005, 'VT_LPSTR', 'Keywords'],
135
+ [0x0006, 'VT_LPSTR', 'Comments'],
136
+ ]
137
+ caption = " \tDoc properties: _create_property_set('+ Comments')"
138
+ target = %w(
139
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
140
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
141
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
142
+ 98 00 00 00 06 00 00 00 01 00 00 00 38 00 00 00
143
+ 02 00 00 00 40 00 00 00 03 00 00 00 50 00 00 00
144
+ 04 00 00 00 60 00 00 00 05 00 00 00 70 00 00 00
145
+ 06 00 00 00 84 00 00 00 02 00 00 00 E4 04 00 00
146
+ 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
147
+ 1E 00 00 00 08 00 00 00 53 75 62 6A 65 63 74 00
148
+ 1E 00 00 00 07 00 00 00 41 75 74 68 6F 72 00 00
149
+ 1E 00 00 00 09 00 00 00 4B 65 79 77 6F 72 64 73
150
+ 00 00 00 00 1E 00 00 00 09 00 00 00 43 6F 6D 6D
151
+ 65 6E 74 73 00 00 00 00
152
+ ).join(' ')
153
+
154
+ result = unpack_record( create_summary_property_set(properties))
155
+ assert_equal(target, result, caption)
156
+ end
157
+
158
+ def test_same_as_previous_plus_last_author
159
+ properties = [
160
+ [0x0001, 'VT_I2', 0x04E4 ],
161
+ [0x0002, 'VT_LPSTR', 'Title'],
162
+ [0x0003, 'VT_LPSTR', 'Subject'],
163
+ [0x0004, 'VT_LPSTR', 'Author' ],
164
+ [0x0005, 'VT_LPSTR', 'Keywords'],
165
+ [0x0006, 'VT_LPSTR', 'Comments'],
166
+ [0x0008, 'VT_LPSTR', 'Username'],
167
+ ]
168
+ caption = " \tDoc properties: _create_property_set('+ Comments')"
169
+ target = %w(
170
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
171
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
172
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
173
+ B4 00 00 00 07 00 00 00 01 00 00 00 40 00 00 00
174
+ 02 00 00 00 48 00 00 00 03 00 00 00 58 00 00 00
175
+ 04 00 00 00 68 00 00 00 05 00 00 00 78 00 00 00
176
+ 06 00 00 00 8C 00 00 00 08 00 00 00 A0 00 00 00
177
+ 02 00 00 00 E4 04 00 00 1E 00 00 00 06 00 00 00
178
+ 54 69 74 6C 65 00 00 00 1E 00 00 00 08 00 00 00
179
+ 53 75 62 6A 65 63 74 00 1E 00 00 00 07 00 00 00
180
+ 41 75 74 68 6F 72 00 00 1E 00 00 00 09 00 00 00
181
+ 4B 65 79 77 6F 72 64 73 00 00 00 00 1E 00 00 00
182
+ 09 00 00 00 43 6F 6D 6D 65 6E 74 73 00 00 00 00
183
+ 1E 00 00 00 09 00 00 00 55 73 65 72 6E 61 6D 65
184
+ 00 00 00 00
185
+ ).join(' ')
186
+
187
+ result = unpack_record( create_summary_property_set(properties))
188
+ assert_equal(target, result, caption)
189
+ end
190
+
191
+ def test_same_as_previous_plus_creation_date
192
+ filetime = Time.gm(2008,8,19,23,20,13)
193
+ properties = [
194
+ [0x0001, 'VT_I2', 0x04E4 ],
195
+ [0x0002, 'VT_LPSTR', 'Title'],
196
+ [0x0003, 'VT_LPSTR', 'Subject'],
197
+ [0x0004, 'VT_LPSTR', 'Author' ],
198
+ [0x0005, 'VT_LPSTR', 'Keywords'],
199
+ [0x0006, 'VT_LPSTR', 'Comments'],
200
+ [0x0008, 'VT_LPSTR', 'Username'],
201
+ [0x000C, 'VT_FILETIME', filetime ],
202
+ ]
203
+ caption = " \tDoc properties: _create_property_set('+ Comments')"
204
+ target = %w(
205
+ FE FF 00 00 05 01 02 00 00 00 00 00 00 00 00 00
206
+ 00 00 00 00 00 00 00 00 01 00 00 00 E0 85 9F F2
207
+ F9 4F 68 10 AB 91 08 00 2B 27 B3 D9 30 00 00 00
208
+ C8 00 00 00 08 00 00 00 01 00 00 00 48 00 00 00
209
+ 02 00 00 00 50 00 00 00 03 00 00 00 60 00 00 00
210
+ 04 00 00 00 70 00 00 00 05 00 00 00 80 00 00 00
211
+ 06 00 00 00 94 00 00 00 08 00 00 00 A8 00 00 00
212
+ 0C 00 00 00 BC 00 00 00 02 00 00 00 E4 04 00 00
213
+ 1E 00 00 00 06 00 00 00 54 69 74 6C 65 00 00 00
214
+ 1E 00 00 00 08 00 00 00 53 75 62 6A 65 63 74 00
215
+ 1E 00 00 00 07 00 00 00 41 75 74 68 6F 72 00 00
216
+ 1E 00 00 00 09 00 00 00 4B 65 79 77 6F 72 64 73
217
+ 00 00 00 00 1E 00 00 00 09 00 00 00 43 6F 6D 6D
218
+ 65 6E 74 73 00 00 00 00 1E 00 00 00 09 00 00 00
219
+ 55 73 65 72 6E 61 6D 65 00 00 00 00 40 00 00 00
220
+ 80 74 89 21 52 02 C9 01
221
+ ).join(' ')
222
+
223
+ result = unpack_record( create_summary_property_set(properties))
224
+ assert_equal(target, result, caption)
225
+ end
226
+
227
+ ###############################################################################
228
+ #
229
+ # Unpack the binary data into a format suitable for printing in tests.
230
+ #
231
+ def unpack_record(data)
232
+ data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
233
+ end
234
+
235
+ end