test_read_format_ar.c revision 299529
1195333Simp/*- 2195333Simp * Copyright (c) 2007 Kai Wang 3195333Simp * Copyright (c) 2007 Tim Kientzle 4195333Simp * All rights reserved. 5195333Simp * 6195333Simp * Redistribution and use in source and binary forms, with or without 7195333Simp * modification, are permitted provided that the following conditions 8195333Simp * are met: 9195333Simp * 1. Redistributions of source code must retain the above copyright 10195333Simp * notice, this list of conditions and the following disclaimer 11195333Simp * in this position and unchanged. 12195333Simp * 2. Redistributions in binary form must reproduce the above copyright 13195333Simp * notice, this list of conditions and the following disclaimer in the 14195333Simp * documentation and/or other materials provided with the distribution. 15195333Simp * 16195333Simp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 17195333Simp * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18195333Simp * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19195333Simp * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 20195333Simp * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21195333Simp * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22195333Simp * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23195333Simp * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24195333Simp * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25195333Simp * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26195333Simp */ 27195333Simp 28195333Simp#include "test.h" 29195333Simp__FBSDID("$FreeBSD: head/contrib/libarchive/libarchive/test/test_read_format_ar.c 299529 2016-05-12 10:16:16Z mm $"); 30195333Simp 31195333Simp 32195333SimpDEFINE_TEST(test_read_format_ar) 33195333Simp{ 34195333Simp char buff[64]; 35195333Simp const char reffile[] = "test_read_format_ar.ar"; 36195333Simp struct archive_entry *ae; 37195333Simp struct archive *a; 38195333Simp 39195333Simp extract_reference_file(reffile); 40195333Simp assert((a = archive_read_new()) != NULL); 41195333Simp assertA(0 == archive_read_support_filter_all(a)); 42195333Simp assertA(0 == archive_read_support_format_all(a)); 43195333Simp assertA(0 == archive_read_open_filename(a, reffile, 7)); 44195333Simp 45195333Simp /* Filename table. */ 46195333Simp assertA(0 == archive_read_next_header(a, &ae)); 47195333Simp assertEqualString("//", archive_entry_pathname(ae)); 48195333Simp assertEqualInt(0, archive_entry_mtime(ae)); 49195333Simp assertEqualInt(0, archive_entry_uid(ae)); 50195333Simp assertEqualInt(0, archive_entry_gid(ae)); 51195333Simp assertEqualInt(0, archive_entry_size(ae)); 52195333Simp assertEqualInt(archive_entry_is_encrypted(ae), 0); 53195333Simp assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 54195333Simp 55205364Sneel /* First Entry */ 56195333Simp assertA(0 == archive_read_next_header(a, &ae)); 57195333Simp assertEqualString("yyytttsssaaafff.o", archive_entry_pathname(ae)); 58195333Simp assertEqualInt(1175465652, archive_entry_mtime(ae)); 59195333Simp assertEqualInt(1001, archive_entry_uid(ae)); 60195333Simp assertEqualInt(0, archive_entry_gid(ae)); 61195333Simp assert(8 == archive_entry_size(ae)); 62195333Simp assertA(8 == archive_read_data(a, buff, 10)); 63195333Simp assertEqualMem(buff, "55667788", 8); 64195333Simp assertEqualInt(archive_entry_is_encrypted(ae), 0); 65195333Simp assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 66195333Simp 67195333Simp /* Second Entry */ 68195333Simp assertA(0 == archive_read_next_header(a, &ae)); 69195333Simp assertEqualString("gghh.o", archive_entry_pathname(ae)); 70195333Simp assertEqualInt(1175465668, archive_entry_mtime(ae)); 71195333Simp assertEqualInt(1001, archive_entry_uid(ae)); 72195333Simp assertEqualInt(0, archive_entry_gid(ae)); 73195333Simp assert(4 == archive_entry_size(ae)); 74195333Simp assertA(4 == archive_read_data(a, buff, 10)); 75195333Simp assertEqualMem(buff, "3333", 4); 76195333Simp assertEqualInt(archive_entry_is_encrypted(ae), 0); 77203697Sneel assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 78208253Sneel 79203697Sneel /* Third Entry */ 80203697Sneel assertA(0 == archive_read_next_header(a, &ae)); 81203697Sneel assertEqualString("hhhhjjjjkkkkllll.o", archive_entry_pathname(ae)); 82195333Simp assertEqualInt(1175465713, archive_entry_mtime(ae)); 83195333Simp assertEqualInt(1001, archive_entry_uid(ae)); 84195333Simp assertEqualInt(0, archive_entry_gid(ae)); 85195333Simp assert(9 == archive_entry_size(ae)); 86195333Simp assertA(9 == archive_read_data(a, buff, 9)); 87195333Simp assertEqualMem(buff, "987654321", 9); 88195333Simp 89195333Simp /* Test EOF */ 90195333Simp assertA(1 == archive_read_next_header(a, &ae)); 91195333Simp assertEqualInt(4, archive_file_count(a)); 92195333Simp assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 93195333Simp assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 94195333Simp} 95195333Simp