test_read_format_iso_Z.c revision 299529
162587Sitojun/*-
278064Sume * Copyright (c) 2003-2007 Tim Kientzle
362587Sitojun * All rights reserved.
4139826Simp *
553541Sshin * Redistribution and use in source and binary forms, with or without
653541Sshin * modification, are permitted provided that the following conditions
753541Sshin * are met:
853541Sshin * 1. Redistributions of source code must retain the above copyright
953541Sshin *    notice, this list of conditions and the following disclaimer.
1053541Sshin * 2. Redistributions in binary form must reproduce the above copyright
1153541Sshin *    notice, this list of conditions and the following disclaimer in the
1253541Sshin *    documentation and/or other materials provided with the distribution.
1353541Sshin *
1453541Sshin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
1553541Sshin * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1653541Sshin * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1753541Sshin * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
1853541Sshin * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1953541Sshin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2053541Sshin * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2153541Sshin * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2253541Sshin * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2353541Sshin * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2453541Sshin */
2553541Sshin#include "test.h"
2653541Sshin__FBSDID("$FreeBSD: head/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c 299529 2016-05-12 10:16:16Z mm $");
2753541Sshin
2853541Sshinstatic void
2953541Sshintest1(void)
3053541Sshin{
3153541Sshin	struct archive_entry *ae;
3253541Sshin	struct archive *a;
33139826Simp	const char *name = "test_read_format_iso.iso.Z";
3453541Sshin
3553541Sshin	extract_reference_file(name);
3653541Sshin
3753541Sshin	assert((a = archive_read_new()) != NULL);
3853541Sshin	assertEqualIntA(a, ARCHIVE_OK,
3953541Sshin	    archive_read_support_filter_all(a));
4053541Sshin	assertEqualIntA(a, ARCHIVE_OK,
4153541Sshin	    archive_read_support_format_all(a));
4253541Sshin	assertEqualIntA(a, ARCHIVE_OK,
4353541Sshin	    archive_read_open_filename(a, name, 512));
4453541Sshin	assertEqualIntA(a, ARCHIVE_OK,
4553541Sshin	    archive_read_next_header(a, &ae));
4653541Sshin	assertEqualInt(1, archive_file_count(a));
4753541Sshin	assertEqualInt(archive_filter_code(a, 0),
4853541Sshin	    ARCHIVE_FILTER_COMPRESS);
4953541Sshin	assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
5053541Sshin	assertEqualInt(archive_entry_is_encrypted(ae), 0);
5153541Sshin	assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
5253541Sshin	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
5353541Sshin	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
5453541Sshin}
5553541Sshin
5653541Sshinstatic void
5753541Sshintest2(void)
5853541Sshin{
5953541Sshin	struct archive_entry *ae;
6053541Sshin	struct archive *a;
6153541Sshin	const char *name = "test_read_format_iso_2.iso.Z";
6253541Sshin
6353541Sshin	extract_reference_file(name);
6462587Sitojun
6562587Sitojun	assert((a = archive_read_new()) != NULL);
6655009Sshin	assertEqualIntA(a, ARCHIVE_OK,
6753541Sshin	    archive_read_support_filter_all(a));
6853541Sshin	assertEqualIntA(a, ARCHIVE_OK,
6995759Stanimura	    archive_read_support_format_all(a));
7095759Stanimura	assertEqualIntA(a, ARCHIVE_OK,
7195759Stanimura	    archive_read_open_filename(a, name, 512));
7278064Sume	assertEqualIntA(a, ARCHIVE_OK,
7353541Sshin	    archive_read_next_header(a, &ae));
7453541Sshin	assertEqualString(".", archive_entry_pathname(ae));
7595759Stanimura	assertEqualIntA(a, ARCHIVE_OK,
7653541Sshin	    archive_read_next_header(a, &ae));
7753541Sshin	assertEqualString("A", archive_entry_pathname(ae));
7895759Stanimura	assertEqualIntA(a, ARCHIVE_OK,
7995759Stanimura	    archive_read_next_header(a, &ae));
8095759Stanimura	assertEqualString("A/B", archive_entry_pathname(ae));
8153541Sshin	assertEqualIntA(a, ARCHIVE_OK,
8253541Sshin	    archive_read_next_header(a, &ae));
8353541Sshin	assertEqualString("C", archive_entry_pathname(ae));
8453541Sshin	assertEqualIntA(a, ARCHIVE_OK,
8553541Sshin	    archive_read_next_header(a, &ae));
8695759Stanimura	assertEqualString("C/D", archive_entry_pathname(ae));
8753541Sshin	assertEqualIntA(a, ARCHIVE_EOF,
8853541Sshin	    archive_read_next_header(a, &ae));
8995759Stanimura	assertEqualInt(5, archive_file_count(a));
9053541Sshin	assertEqualInt(archive_filter_code(a, 0),
9162587Sitojun	    ARCHIVE_FILTER_COMPRESS);
9295759Stanimura	assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
93122922Sandre	assertEqualInt(archive_entry_is_encrypted(ae), 0);
9495759Stanimura	assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
9595759Stanimura	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
9695759Stanimura	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
9753541Sshin}
98148385Sume
9953541SshinDEFINE_TEST(test_read_format_iso_Z)
10053541Sshin{
10153541Sshin	test1();
10253541Sshin	test2();
10353541Sshin}
10453541Sshin