1b39c5158Smillert#!perl -w
2b39c5158Smillert
3898184e3SsthenBEGIN {
4898184e3Ssthen    unshift @INC, 't/compat' if $] < 5.006002;
5898184e3Ssthen};
6898184e3Ssthen
7b39c5158Smillertuse strict;
8b39c5158Smillertuse Test::More;
9b39c5158Smillertuse Storable qw(store nstore);
10b39c5158Smillertuse Config qw(%Config);
11b39c5158Smillert
12b39c5158Smillert# The @tests array below was create by the following program
13b39c5158Smillertmy $dummy = <<'EOT';
14b39c5158Smillertuse Storable;
15b39c5158Smillertuse Data::Dump qw(dump);
16b39c5158Smillert
17b39c5158Smillertprint "my \@tests = (\n";
18b39c5158Smillertfor my $f (<data_*>) {
19b39c5158Smillert    print "    [\n";
20b39c5158Smillert    print "        " . dump(substr(`cat $f`, 0, 32) . "...") , ",\n";
21b39c5158Smillert
22b39c5158Smillert    my $x = dump(Storable::file_magic($f));
23b39c5158Smillert    $x =~ s/^/        /gm;
24b39c5158Smillert    print "$x,\n";
25b39c5158Smillert
26b39c5158Smillert    print "    ],\n";
27b39c5158Smillert}
28b39c5158Smillertprint ");\n";
29b39c5158SmillertEOT
30b39c5158Smillert
31b39c5158Smillertmy @tests = (
32b39c5158Smillert    [
33b39c5158Smillert        "perl-store\x041234\4\4\4\xD4\xC2\32\b\3\13\0\0\0v\b\xC5\32\b...",
34b39c5158Smillert        {
35b39c5158Smillert          byteorder  => 1234,
36b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.1.le32",
37b39c5158Smillert          hdrsize    => 18,
38b39c5158Smillert          intsize    => 4,
39b39c5158Smillert          longsize   => 4,
40b39c5158Smillert          netorder   => 0,
41b39c5158Smillert          ptrsize    => 4,
42b39c5158Smillert          version    => -1,
43b39c5158Smillert          version_nv => -1,
44b39c5158Smillert        },
45b39c5158Smillert    ],
46b39c5158Smillert    [
47b39c5158Smillert        "perl-store\0\x041234\4\4\4\x8Co\34\b\3\13\0\0\0v\x94v\34...",
48b39c5158Smillert        {
49b39c5158Smillert          byteorder  => 1234,
50b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.4_07.le32",
51b39c5158Smillert          hdrsize    => 19,
52b39c5158Smillert          intsize    => 4,
53b39c5158Smillert          longsize   => 4,
54b39c5158Smillert          major      => 0,
55b39c5158Smillert          netorder   => 0,
56b39c5158Smillert          ptrsize    => 4,
57b39c5158Smillert          version    => 0,
58b39c5158Smillert          version_nv => 0,
59b39c5158Smillert        },
60b39c5158Smillert    ],
61b39c5158Smillert    [
62b39c5158Smillert        "perl-store\1\x8Co\34\b\3\0\0\0\13v\x94v\34\b\1\0\0\4\0\0\0...",
63b39c5158Smillert        {
64b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.4_07.neutral",
65b39c5158Smillert          hdrsize    => 11,
66b39c5158Smillert          major      => 0,
67b39c5158Smillert          netorder   => 1,
68b39c5158Smillert          version    => 0,
69b39c5158Smillert          version_nv => 0,
70b39c5158Smillert        },
71b39c5158Smillert    ],
72b39c5158Smillert    [
73b39c5158Smillert        "pst0\2\x041234\4\4\4\3\13\0\0\0\1\0\4\0\0\0\0\0\0\0\0\0\0\0...",
74b39c5158Smillert        {
75b39c5158Smillert          byteorder  => 1234,
76b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.604.le32",
77b39c5158Smillert          hdrsize    => 13,
78b39c5158Smillert          intsize    => 4,
79b39c5158Smillert          longsize   => 4,
80b39c5158Smillert          major      => 1,
81b39c5158Smillert          netorder   => 0,
82b39c5158Smillert          ptrsize    => 4,
83b39c5158Smillert          version    => 1,
84b39c5158Smillert          version_nv => 1,
85b39c5158Smillert        },
86b39c5158Smillert    ],
87b39c5158Smillert    [
88b39c5158Smillert        "pst0\3\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
89b39c5158Smillert        {
90b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.604.neutral",
91b39c5158Smillert          hdrsize    => 5,
92b39c5158Smillert          major      => 1,
93b39c5158Smillert          netorder   => 1,
94b39c5158Smillert          version    => 1,
95b39c5158Smillert          version_nv => 1,
96b39c5158Smillert        },
97b39c5158Smillert    ],
98b39c5158Smillert    [
99b39c5158Smillert        "pst0\4\0\x041234\4\4\4\3\13\0\0\0\1\0\4\0\0\0\0\0\0\0\0\0\0...",
100b39c5158Smillert        {
101b39c5158Smillert          byteorder  => 1234,
102b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.700.le32",
103b39c5158Smillert          hdrsize    => 14,
104b39c5158Smillert          intsize    => 4,
105b39c5158Smillert          longsize   => 4,
106b39c5158Smillert          major      => 2,
107b39c5158Smillert          minor      => 0,
108b39c5158Smillert          netorder   => 0,
109b39c5158Smillert          ptrsize    => 4,
110b39c5158Smillert          version    => "2.0",
111b39c5158Smillert          version_nv => "2.000",
112b39c5158Smillert        },
113b39c5158Smillert    ],
114b39c5158Smillert    [
115b39c5158Smillert        "pst0\5\0\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
116b39c5158Smillert        {
117b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-0.700.neutral",
118b39c5158Smillert          hdrsize    => 6,
119b39c5158Smillert          major      => 2,
120b39c5158Smillert          minor      => 0,
121b39c5158Smillert          netorder   => 1,
122b39c5158Smillert          version    => "2.0",
123b39c5158Smillert          version_nv => "2.000",
124b39c5158Smillert        },
125b39c5158Smillert    ],
126b39c5158Smillert    [
127b39c5158Smillert        "pst0\4\4\x041234\4\4\4\x08\3\13\0\0\0\1\0\4\0\0\0\0\0\0\0\0\0...",
128b39c5158Smillert        {
129b39c5158Smillert          byteorder  => 1234,
130b39c5158Smillert          file       => "data_perl-5.006001_i686-linux-thread-multi_Storable-1.012.le32",
131b39c5158Smillert          hdrsize    => 15,
132b39c5158Smillert          intsize    => 4,
133b39c5158Smillert          longsize   => 4,
134b39c5158Smillert          major      => 2,
135b39c5158Smillert          minor      => 4,
136b39c5158Smillert          netorder   => 0,
137b39c5158Smillert          nvsize     => 8,
138b39c5158Smillert          ptrsize    => 4,
139b39c5158Smillert          version    => "2.4",
140b39c5158Smillert          version_nv => "2.004",
141b39c5158Smillert        },
142b39c5158Smillert    ],
143b39c5158Smillert    [
144b39c5158Smillert        "pst0\4\3\x044321\4\4\4\x08\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0...",
145b39c5158Smillert        {
146b39c5158Smillert          byteorder  => 4321,
147b39c5158Smillert          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.006.be32",
148b39c5158Smillert          hdrsize    => 15,
149b39c5158Smillert          intsize    => 4,
150b39c5158Smillert          longsize   => 4,
151b39c5158Smillert          major      => 2,
152b39c5158Smillert          minor      => 3,
153b39c5158Smillert          netorder   => 0,
154b39c5158Smillert          nvsize     => 8,
155b39c5158Smillert          ptrsize    => 4,
156b39c5158Smillert          version    => "2.3",
157b39c5158Smillert          version_nv => "2.003",
158b39c5158Smillert        },
159b39c5158Smillert    ],
160b39c5158Smillert    [
161b39c5158Smillert        "pst0\5\3\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
162b39c5158Smillert        {
163b39c5158Smillert          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.006.neutral",
164b39c5158Smillert          hdrsize    => 6,
165b39c5158Smillert          major      => 2,
166b39c5158Smillert          minor      => 3,
167b39c5158Smillert          netorder   => 1,
168b39c5158Smillert          version    => "2.3",
169b39c5158Smillert          version_nv => "2.003",
170b39c5158Smillert        },
171b39c5158Smillert    ],
172b39c5158Smillert    [
173b39c5158Smillert        "pst0\4\4\x044321\4\4\4\x08\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0...",
174b39c5158Smillert        {
175b39c5158Smillert          byteorder  => 4321,
176b39c5158Smillert          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.012.be32",
177b39c5158Smillert          hdrsize    => 15,
178b39c5158Smillert          intsize    => 4,
179b39c5158Smillert          longsize   => 4,
180b39c5158Smillert          major      => 2,
181b39c5158Smillert          minor      => 4,
182b39c5158Smillert          netorder   => 0,
183b39c5158Smillert          nvsize     => 8,
184b39c5158Smillert          ptrsize    => 4,
185b39c5158Smillert          version    => "2.4",
186b39c5158Smillert          version_nv => "2.004",
187b39c5158Smillert        },
188b39c5158Smillert    ],
189b39c5158Smillert    [
190b39c5158Smillert        "pst0\5\4\3\0\0\0\13\1\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...",
191b39c5158Smillert        {
192b39c5158Smillert          file       => "data_perl-5.006001_IA64.ARCHREV_0-thread-multi_Storable-1.012.neutral",
193b39c5158Smillert          hdrsize    => 6,
194b39c5158Smillert          major      => 2,
195b39c5158Smillert          minor      => 4,
196b39c5158Smillert          netorder   => 1,
197b39c5158Smillert          version    => "2.4",
198b39c5158Smillert          version_nv => "2.004",
199b39c5158Smillert        },
200b39c5158Smillert    ],
201b39c5158Smillert    [
202b39c5158Smillert        "pst0\4\6\x044321\4\4\4\x08\3\0\0\0\13\n\n4294967296...",
203b39c5158Smillert        {
204b39c5158Smillert          byteorder  => 4321,
205b39c5158Smillert          file       => "data_perl-5.008001_darwin-thread-multi-2level_Storable-2.08.be32",
206b39c5158Smillert          hdrsize    => 15,
207b39c5158Smillert          intsize    => 4,
208b39c5158Smillert          longsize   => 4,
209b39c5158Smillert          major      => 2,
210b39c5158Smillert          minor      => 6,
211b39c5158Smillert          netorder   => 0,
212b39c5158Smillert          nvsize     => 8,
213b39c5158Smillert          ptrsize    => 4,
214b39c5158Smillert          version    => "2.6",
215b39c5158Smillert          version_nv => "2.006",
216b39c5158Smillert        },
217b39c5158Smillert    ],
218b39c5158Smillert    [
219b39c5158Smillert        "pst0\5\6\3\0\0\0\13\n\n4294967296\0\0\0\bfour_...",
220b39c5158Smillert        {
221b39c5158Smillert          file       => "data_perl-5.008001_darwin-thread-multi-2level_Storable-2.08.neutral",
222b39c5158Smillert          hdrsize    => 6,
223b39c5158Smillert          major      => 2,
224b39c5158Smillert          minor      => 6,
225b39c5158Smillert          netorder   => 1,
226b39c5158Smillert          version    => "2.6",
227b39c5158Smillert          version_nv => "2.006",
228b39c5158Smillert        },
229b39c5158Smillert    ],
230b39c5158Smillert    [
231b39c5158Smillert        "pst0\4\6\x044321\4\4\4\x08\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nem...",
232b39c5158Smillert        {
233b39c5158Smillert          byteorder  => 4321,
234b39c5158Smillert          file       => "data_perl-5.008003_PA-RISC1.1-thread-multi_Storable-2.09.be32",
235b39c5158Smillert          hdrsize    => 15,
236b39c5158Smillert          intsize    => 4,
237b39c5158Smillert          longsize   => 4,
238b39c5158Smillert          major      => 2,
239b39c5158Smillert          minor      => 6,
240b39c5158Smillert          netorder   => 0,
241b39c5158Smillert          nvsize     => 8,
242b39c5158Smillert          ptrsize    => 4,
243b39c5158Smillert          version    => "2.6",
244b39c5158Smillert          version_nv => "2.006",
245b39c5158Smillert        },
246b39c5158Smillert    ],
247b39c5158Smillert    [
248b39c5158Smillert        "pst0\5\6\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nempty_hash\n...",
249b39c5158Smillert        {
250b39c5158Smillert          file       => "data_perl-5.008003_PA-RISC1.1-thread-multi_Storable-2.09.neutral",
251b39c5158Smillert          hdrsize    => 6,
252b39c5158Smillert          major      => 2,
253b39c5158Smillert          minor      => 6,
254b39c5158Smillert          netorder   => 1,
255b39c5158Smillert          version    => "2.6",
256b39c5158Smillert          version_nv => "2.006",
257b39c5158Smillert        },
258b39c5158Smillert    ],
259b39c5158Smillert    [
260b39c5158Smillert        "pst0\4\6\x0812345678\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0...",
261b39c5158Smillert        {
262b39c5158Smillert          byteorder  => 12_345_678,
263b39c5158Smillert          file       => "data_perl-5.008004_i86pc-solaris-64int_Storable-2.12.le64",
264b39c5158Smillert          hdrsize    => 19,
265b39c5158Smillert          intsize    => 4,
266b39c5158Smillert          longsize   => 4,
267b39c5158Smillert          major      => 2,
268b39c5158Smillert          minor      => 6,
269b39c5158Smillert          netorder   => 0,
270b39c5158Smillert          nvsize     => 8,
271b39c5158Smillert          ptrsize    => 4,
272b39c5158Smillert          version    => "2.6",
273b39c5158Smillert          version_nv => "2.006",
274b39c5158Smillert        },
275b39c5158Smillert    ],
276b39c5158Smillert    [
277b39c5158Smillert        "pst0\4\6\x041234\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0\0\0em...",
278b39c5158Smillert        {
279b39c5158Smillert          byteorder  => 1234,
280b39c5158Smillert          file       => "data_perl-5.008006_i686-linux-thread-multi_Storable-2.13.le32",
281b39c5158Smillert          hdrsize    => 15,
282b39c5158Smillert          intsize    => 4,
283b39c5158Smillert          longsize   => 4,
284b39c5158Smillert          major      => 2,
285b39c5158Smillert          minor      => 6,
286b39c5158Smillert          netorder   => 0,
287b39c5158Smillert          nvsize     => 8,
288b39c5158Smillert          ptrsize    => 4,
289b39c5158Smillert          version    => "2.6",
290b39c5158Smillert          version_nv => "2.006",
291b39c5158Smillert        },
292b39c5158Smillert    ],
293b39c5158Smillert    [
294b39c5158Smillert        "pst0\4\6\x0887654321\4\x08\x08\x08\3\0\0\0\13\4\3\0\0\0\0\0\0...",
295b39c5158Smillert        {
296b39c5158Smillert          byteorder  => 87_654_321,
297b39c5158Smillert          file       => "data_perl-5.008007_IA64.ARCHREV_0-thread-multi-LP64_Storable-2.13.be64",
298b39c5158Smillert          hdrsize    => 19,
299b39c5158Smillert          intsize    => 4,
300b39c5158Smillert          longsize   => 8,
301b39c5158Smillert          major      => 2,
302b39c5158Smillert          minor      => 6,
303b39c5158Smillert          netorder   => 0,
304b39c5158Smillert          nvsize     => 8,
305b39c5158Smillert          ptrsize    => 8,
306b39c5158Smillert          version    => "2.6",
307b39c5158Smillert          version_nv => "2.006",
308b39c5158Smillert        },
309b39c5158Smillert    ],
310b39c5158Smillert    [
311b39c5158Smillert        "pst0\4\x07\x0812345678\4\x08\x08\x08\3\13\0\0\0\4\3\0\0\0\0\n\0...",
312b39c5158Smillert        {
313b39c5158Smillert          byteorder  => 12_345_678,
314b39c5158Smillert          file       => "data_perl-5.008007_x86-solaris-thread-multi-64_Storable-2.15.le64",
315b39c5158Smillert          hdrsize    => 19,
316b39c5158Smillert          intsize    => 4,
317b39c5158Smillert          longsize   => 8,
318b39c5158Smillert          major      => 2,
319b39c5158Smillert          minor      => 7,
320b39c5158Smillert          netorder   => 0,
321b39c5158Smillert          nvsize     => 8,
322b39c5158Smillert          ptrsize    => 8,
323b39c5158Smillert          version    => "2.7",
324b39c5158Smillert          version_nv => "2.007",
325b39c5158Smillert        },
326b39c5158Smillert    ],
327b39c5158Smillert    [
328b39c5158Smillert        "pst0\5\x07\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nempty_hash\n...",
329b39c5158Smillert        {
330b39c5158Smillert          file       => "data_perl-5.008007_x86-solaris-thread-multi-64_Storable-2.15.neutral",
331b39c5158Smillert          hdrsize    => 6,
332b39c5158Smillert          major      => 2,
333b39c5158Smillert          minor      => 7,
334b39c5158Smillert          netorder   => 1,
335b39c5158Smillert          version    => "2.7",
336b39c5158Smillert          version_nv => "2.007",
337b39c5158Smillert        },
338b39c5158Smillert    ],
339b39c5158Smillert    [
340b39c5158Smillert        "pst0\4\5\x041234\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0\0\0em...",
341b39c5158Smillert        {
342b39c5158Smillert          byteorder  => 1234,
343b39c5158Smillert          file       => "data_perl-5.008_i686-linux-thread-multi_Storable-2.04.le32",
344b39c5158Smillert          hdrsize    => 15,
345b39c5158Smillert          intsize    => 4,
346b39c5158Smillert          longsize   => 4,
347b39c5158Smillert          major      => 2,
348b39c5158Smillert          minor      => 5,
349b39c5158Smillert          netorder   => 0,
350b39c5158Smillert          nvsize     => 8,
351b39c5158Smillert          ptrsize    => 4,
352b39c5158Smillert          version    => "2.5",
353b39c5158Smillert          version_nv => "2.005",
354b39c5158Smillert        },
355b39c5158Smillert    ],
356b39c5158Smillert    [
357b39c5158Smillert        "pst0\5\5\3\0\0\0\13\4\3\0\0\0\0\0\0\0\nempty_hash\n...",
358b39c5158Smillert        {
359b39c5158Smillert          file       => "data_perl-5.008_i686-linux-thread-multi_Storable-2.04.neutral",
360b39c5158Smillert          hdrsize    => 6,
361b39c5158Smillert          major      => 2,
362b39c5158Smillert          minor      => 5,
363b39c5158Smillert          netorder   => 1,
364b39c5158Smillert          version    => "2.5",
365b39c5158Smillert          version_nv => "2.005",
366b39c5158Smillert        },
367b39c5158Smillert    ],
368b39c5158Smillert    [
369b39c5158Smillert        "pst0\4\x07\x041234\4\4\4\x08\3\13\0\0\0\4\3\0\0\0\0\n\0\0\0em...",
370b39c5158Smillert        {
371b39c5158Smillert          byteorder  => 1234,
372b39c5158Smillert          file       => "data_perl-5.009003_i686-linux_Storable-2.15.le32",
373b39c5158Smillert          hdrsize    => 15,
374b39c5158Smillert          intsize    => 4,
375b39c5158Smillert          longsize   => 4,
376b39c5158Smillert          major      => 2,
377b39c5158Smillert          minor      => 7,
378b39c5158Smillert          netorder   => 0,
379b39c5158Smillert          nvsize     => 8,
380b39c5158Smillert          ptrsize    => 4,
381b39c5158Smillert          version    => "2.7",
382b39c5158Smillert          version_nv => "2.007",
383b39c5158Smillert        },
384b39c5158Smillert    ],
385b39c5158Smillert);
386b39c5158Smillert
387b39c5158Smillertplan tests => 31 + 2 * @tests;
388b39c5158Smillert
389b39c5158Smillertmy $file = "xx-$$.pst";
390b39c5158Smillert
391b39c5158Smillertis(eval { Storable::file_magic($file) }, undef, "empty file give undef");
392b39c5158Smillertlike($@, qq{/^Can't open '\Q$file\E':/}, "...and croaks");
393b39c5158Smillertis(Storable::file_magic(__FILE__), undef, "not an image");
394b39c5158Smillert
395b39c5158Smillertstore({}, $file);
396b39c5158Smillert{
397b39c5158Smillert    my $info = Storable::file_magic($file);
398b39c5158Smillert    unlink($file);
399b39c5158Smillert    ok($info, "got info");
400b39c5158Smillert    is($info->{file}, $file, "file set");
401b39c5158Smillert    is($info->{hdrsize}, 11 + length($Config{byteorder}), "hdrsize");
402b39c5158Smillert    like($info->{version}, q{/^2\.\d+$/}, "sane version");
403b39c5158Smillert    is($info->{version_nv}, Storable::BIN_WRITE_VERSION_NV, "version_nv match");
404b39c5158Smillert    is($info->{major}, 2, "sane major");
405b39c5158Smillert    ok($info->{minor}, "have minor");
406b39c5158Smillert    ok($info->{minor} >= Storable::BIN_WRITE_MINOR, "large enough minor");
407b39c5158Smillert
408b39c5158Smillert    ok(!$info->{netorder}, "no netorder");
409b39c5158Smillert
410b39c5158Smillert    my %attrs = (
411b39c5158Smillert        nvsize  => 5.006,
412b39c5158Smillert        ptrsize => 5.005,
413b39c5158Smillert        map {$_ => 5.004} qw(byteorder intsize longsize)
414b39c5158Smillert    );
415b39c5158Smillert    for my $attr (keys %attrs) {
416b39c5158Smillert        SKIP: {
417b39c5158Smillert            skip "attribute $attr not available on this version of Perl", 1 if $attrs{$attr} > $];
418b39c5158Smillert            is($info->{$attr}, $Config{$attr}, "$attr match Config");
419b39c5158Smillert        }
420b39c5158Smillert    }
421b39c5158Smillert}
422b39c5158Smillert
423b39c5158Smillertnstore({}, $file);
424b39c5158Smillert{
425b39c5158Smillert    my $info = Storable::file_magic($file);
426b39c5158Smillert    unlink($file);
427b39c5158Smillert    ok($info, "got info");
428b39c5158Smillert    is($info->{file}, $file, "file set");
429b39c5158Smillert    is($info->{hdrsize}, 6, "hdrsize");
430b39c5158Smillert    like($info->{version}, q{/^2\.\d+$/}, "sane version");
431b39c5158Smillert    is($info->{version_nv}, Storable::BIN_WRITE_VERSION_NV, "version_nv match");
432b39c5158Smillert    is($info->{major}, 2, "sane major");
433b39c5158Smillert    ok($info->{minor}, "have minor");
434b39c5158Smillert    ok($info->{minor} >= Storable::BIN_WRITE_MINOR, "large enough minor");
435b39c5158Smillert
436b39c5158Smillert    ok($info->{netorder}, "no netorder");
437b39c5158Smillert    for (qw(byteorder intsize longsize ptrsize nvsize)) {
438b39c5158Smillert	ok(!exists $info->{$_}, "no $_");
439b39c5158Smillert    }
440b39c5158Smillert}
441b39c5158Smillert
442b39c5158Smillertfor my $test (@tests) {
443b39c5158Smillert    my($data, $expected) = @$test;
444*5759b3d2Safresh1    open(FH, '>', $file) || die "Can't create $file: $!";
445b39c5158Smillert    binmode(FH);
446b39c5158Smillert    print FH $data;
447b39c5158Smillert    close(FH) || die "Can't write $file: $!";
448b39c5158Smillert
449b39c5158Smillert    my $name = $expected->{file};
450b39c5158Smillert    $expected->{file} = $file;
451b39c5158Smillert
452b39c5158Smillert    my $info = Storable::file_magic($file);
453b39c5158Smillert    unlink($file);
454b39c5158Smillert
455b39c5158Smillert    is_deeply($info, $expected, "file_magic $name");
456b39c5158Smillert
457b39c5158Smillert    $expected->{file} = 1;
458b39c5158Smillert    is_deeply(Storable::read_magic($data), $expected, "read magic $name");
459b39c5158Smillert}
460