1228753Smm/*-
2228753Smm * Copyright (c) 2009 Michihiro NAKAJIMA
3228753Smm * Copyright (c) 2003-2007 Tim Kientzle
4228753Smm * All rights reserved.
5228753Smm *
6228753Smm * Redistribution and use in source and binary forms, with or without
7228753Smm * modification, are permitted provided that the following conditions
8228753Smm * are met:
9228753Smm * 1. Redistributions of source code must retain the above copyright
10228753Smm *    notice, this list of conditions and the following disclaimer.
11228753Smm * 2. Redistributions in binary form must reproduce the above copyright
12228753Smm *    notice, this list of conditions and the following disclaimer in the
13228753Smm *    documentation and/or other materials provided with the distribution.
14228753Smm *
15228753Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
16228753Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17228753Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18228753Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
19228753Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20228753Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21228753Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22228753Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23228753Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24228753Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25228753Smm */
26228753Smm#include "test.h"
27228763Smm__FBSDID("$FreeBSD$");
28228753Smm
29228753Smmstatic unsigned char archive[] = {
30228753Smm 0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00, 0x00, 0x04,
31228753Smm 0xe6, 0xd6, 0xb4, 0x46, 0x02, 0x00, 0x21, 0x01,
32228753Smm 0x16, 0x00, 0x00, 0x00, 0x74, 0x2f, 0xe5, 0xa3,
33228753Smm 0xe0, 0x01, 0xff, 0x00, 0x33, 0x5d, 0x00, 0x63,
34228753Smm 0x9c, 0x3e, 0xa0, 0x43, 0x7c, 0xe6, 0x5d, 0xdc,
35228753Smm 0xeb, 0x76, 0x1d, 0x4b, 0x1b, 0xe2, 0x9e, 0x43,
36228753Smm 0x95, 0x97, 0x60, 0x16, 0x36, 0xc6, 0xd1, 0x3f,
37228753Smm 0x68, 0xd1, 0x94, 0xf9, 0xee, 0x47, 0xbb, 0xc9,
38228753Smm 0xf3, 0xa2, 0x01, 0x2a, 0x2f, 0x2b, 0xb2, 0x23,
39228753Smm 0x5a, 0x06, 0x9c, 0xd0, 0x4a, 0x6b, 0x5b, 0x14,
40228753Smm 0xb4, 0x00, 0x00, 0x00, 0x91, 0x62, 0x1e, 0x15,
41228753Smm 0x04, 0x46, 0x6b, 0x4d, 0x00, 0x01, 0x4f, 0x80,
42228753Smm 0x04, 0x00, 0x00, 0x00, 0xa1, 0x4b, 0xdf, 0x03,
43228753Smm 0xb1, 0xc4, 0x67, 0xfb, 0x02, 0x00, 0x00, 0x00,
44228753Smm 0x00, 0x04, 0x59, 0x5a
45228753Smm};
46228753Smm
47228753SmmDEFINE_TEST(test_read_format_cpio_bin_xz)
48228753Smm{
49228753Smm	struct archive_entry *ae;
50228753Smm	struct archive *a;
51228753Smm	int r;
52228753Smm
53228753Smm	assert((a = archive_read_new()) != NULL);
54232153Smm	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
55232153Smm	r = archive_read_support_filter_xz(a);
56228753Smm	if (r == ARCHIVE_WARN) {
57228753Smm		skipping("xz reading not fully supported on this platform");
58232153Smm		assertEqualInt(ARCHIVE_OK, archive_read_free(a));
59228753Smm		return;
60228753Smm	}
61228753Smm	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
62228753Smm	assertEqualIntA(a, ARCHIVE_OK,
63228753Smm	    archive_read_open_memory(a, archive, sizeof(archive)));
64228753Smm	assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
65248616Smm	assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ);
66228753Smm	assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
67302001Smm	assertEqualInt(archive_entry_is_encrypted(ae), 0);
68302001Smm	assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
69228753Smm	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
70232153Smm	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
71228753Smm}
72228753Smm
73