static void test_SetupGetFileCompressionInfo(void) { DWORD ret, source_size, target_size; char source[MAX_PATH], temp[MAX_PATH], *name; UINT type; GetTempPathA(sizeof(temp), temp); GetTempFileNameA(temp, "fci", 0, source); create_source_file(source, uncompressed, sizeof(uncompressed)); ret = SetupGetFileCompressionInfoA(NULL, NULL, NULL, NULL, NULL); ok(ret == ERROR_INVALID_PARAMETER, "SetupGetFileCompressionInfo failed unexpectedly\n"); ret = SetupGetFileCompressionInfoA(source, NULL, NULL, NULL, NULL); ok(ret == ERROR_INVALID_PARAMETER, "SetupGetFileCompressionInfo failed unexpectedly\n"); ret = SetupGetFileCompressionInfoA(source, &name, NULL, NULL, NULL); ok(ret == ERROR_INVALID_PARAMETER, "SetupGetFileCompressionInfo failed unexpectedly\n"); ret = SetupGetFileCompressionInfoA(source, &name, &source_size, NULL, NULL); ok(ret == ERROR_INVALID_PARAMETER, "SetupGetFileCompressionInfo failed unexpectedly\n"); ret = SetupGetFileCompressionInfoA(source, &name, &source_size, &target_size, NULL); ok(ret == ERROR_INVALID_PARAMETER, "SetupGetFileCompressionInfo failed unexpectedly\n"); name = NULL; source_size = target_size = 0; type = 5; ret = SetupGetFileCompressionInfoA(source, &name, &source_size, &target_size, &type); ok(!ret, "SetupGetFileCompressionInfo failed unexpectedly\n"); ok(name && !lstrcmpA(name, source), "got %s, expected %s\n", name, source); ok(source_size == sizeof(uncompressed), "got %d\n", source_size); ok(target_size == sizeof(uncompressed), "got %d\n", target_size); ok(type == FILE_COMPRESSION_NONE, "got %d, expected FILE_COMPRESSION_NONE\n", type); MyFree(name); DeleteFileA(source); }
static void test_SetupDecompressOrCopyFile(void) { DWORD ret; char source[MAX_PATH], target[MAX_PATH], temp[MAX_PATH], *p; UINT type; int i; const struct { PCSTR source; PCSTR target; PUINT type; } invalid_parameters[] = { {NULL, NULL, NULL}, {NULL, NULL, &type}, {NULL, target, NULL}, {NULL, target, &type}, {source, NULL, NULL}, {source, NULL, &type}, }; const struct { const char *filename; const BYTE *expected_buffer; const size_t buffer_size; } zip_multi_tests[] = { {"tristram", laurence, sizeof(laurence)}, {"tristram.txt", laurence, sizeof(laurence)}, {"wine", laurence, sizeof(laurence)}, {"wine.txt", laurence, sizeof(laurence)}, {"shandy", laurence, sizeof(laurence)}, {"shandy.txt", laurence, sizeof(laurence)}, {"deadbeef", laurence, sizeof(laurence)}, {"deadbeef.txt", laurence, sizeof(laurence)}, }; GetTempPathA(sizeof(temp), temp); GetTempFileNameA(temp, "doc", 0, source); GetTempFileNameA(temp, "doc", 0, target); /* parameter tests */ create_source_file(source, uncompressed, sizeof(uncompressed)); for (i = 0; i < sizeof(invalid_parameters)/sizeof(invalid_parameters[0]); i++) { type = FILE_COMPRESSION_NONE; ret = SetupDecompressOrCopyFileA(invalid_parameters[i].source, invalid_parameters[i].target, invalid_parameters[i].type); ok(ret == ERROR_INVALID_PARAMETER, "[%d] Expected SetupDecompressOrCopyFileA to return ERROR_INVALID_PARAMETER, got %u\n", i, ret); /* try an invalid compression type */ type = 5; ret = SetupDecompressOrCopyFileA(invalid_parameters[i].source, invalid_parameters[i].target, invalid_parameters[i].type); ok(ret == ERROR_INVALID_PARAMETER, "[%d] Expected SetupDecompressOrCopyFileA to return ERROR_INVALID_PARAMETER, got %u\n", i, ret); } type = 5; /* try an invalid compression type */ ret = SetupDecompressOrCopyFileA(source, target, &type); ok(ret == ERROR_INVALID_PARAMETER, "SetupDecompressOrCopyFile failed unexpectedly\n"); DeleteFileA(target); /* no compression tests */ ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); /* try overwriting existing file */ ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); DeleteFileA(target); type = FILE_COMPRESSION_NONE; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); DeleteFileA(target); type = FILE_COMPRESSION_WINLZA; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); DeleteFileA(target); /* lz compression tests */ create_source_file(source, comp_lzx, sizeof(comp_lzx)); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); DeleteFileA(target); /* zip compression tests */ create_source_file(source, comp_zip, sizeof(comp_zip)); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, comp_zip, sizeof(comp_zip)), "incorrect target file\n"); DeleteFileA(target); /* cabinet compression tests */ create_source_file(source, comp_cab_zip, sizeof(comp_cab_zip)); p = strrchr(target, '\\'); lstrcpyA(p + 1, "wine"); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); /* try overwriting existing file */ ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); /* try zip compression */ type = FILE_COMPRESSION_MSZIP; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); /* try no compression */ type = FILE_COMPRESSION_NONE; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, comp_cab_zip, sizeof(comp_cab_zip)), "incorrect target file\n"); /* Show that SetupDecompressOrCopyFileA simply extracts the first file it * finds within the compressed cabinet. Contents are: * tristram -> "laurence\r\n" * wine -> "uncompressed\r\n" * shandy -> "sterne\r\n" */ create_source_file(source, comp_cab_zip_multi, sizeof(comp_cab_zip_multi)); p = strrchr(target, '\\'); for (i = 0; i < sizeof(zip_multi_tests)/sizeof(zip_multi_tests[0]); i++) { lstrcpyA(p + 1, zip_multi_tests[i].filename); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "[%d] SetupDecompressOrCopyFile failed unexpectedly: %d\n", i, ret); ok(compare_file_data(target, zip_multi_tests[i].expected_buffer, zip_multi_tests[i].buffer_size), "[%d] incorrect target file\n", i); DeleteFileA(target); } DeleteFileA(source); }
static void test_SetupGetFileCompressionInfoEx(void) { BOOL ret; DWORD required_len, source_size, target_size; char source[MAX_PATH], temp[MAX_PATH], name[MAX_PATH]; UINT type; GetTempPathA(sizeof(temp), temp); GetTempFileNameA(temp, "doc", 0, source); ret = pSetupGetFileCompressionInfoExA(NULL, NULL, 0, NULL, NULL, NULL, NULL); ok(!ret, "SetupGetFileCompressionInfoEx succeeded unexpectedly\n"); ret = pSetupGetFileCompressionInfoExA(source, NULL, 0, NULL, NULL, NULL, NULL); ok(!ret, "SetupGetFileCompressionInfoEx succeeded unexpectedly\n"); ret = pSetupGetFileCompressionInfoExA(source, NULL, 0, &required_len, NULL, NULL, NULL); ok(!ret, "SetupGetFileCompressionInfoEx succeeded unexpectedly\n"); ok(required_len == lstrlenA(source) + 1, "got %d, expected %d\n", required_len, lstrlenA(source) + 1); create_source_file(source, comp_lzx, sizeof(comp_lzx)); ret = pSetupGetFileCompressionInfoExA(source, name, sizeof(name), &required_len, &source_size, &target_size, &type); ok(ret, "SetupGetFileCompressionInfoEx failed unexpectedly: %d\n", ret); ok(!lstrcmpA(name, source), "got %s, expected %s\n", name, source); ok(required_len == lstrlenA(source) + 1, "got %d, expected %d\n", required_len, lstrlenA(source) + 1); ok(source_size == sizeof(comp_lzx), "got %d\n", source_size); ok(target_size == sizeof(uncompressed), "got %d\n", target_size); ok(type == FILE_COMPRESSION_WINLZA, "got %d, expected FILE_COMPRESSION_WINLZA\n", type); DeleteFileA(source); create_source_file(source, comp_zip, sizeof(comp_zip)); ret = pSetupGetFileCompressionInfoExA(source, name, sizeof(name), &required_len, &source_size, &target_size, &type); ok(ret, "SetupGetFileCompressionInfoEx failed unexpectedly: %d\n", ret); ok(!lstrcmpA(name, source), "got %s, expected %s\n", name, source); ok(required_len == lstrlenA(source) + 1, "got %d, expected %d\n", required_len, lstrlenA(source) + 1); ok(source_size == sizeof(comp_zip), "got %d\n", source_size); ok(target_size == sizeof(comp_zip), "got %d\n", target_size); ok(type == FILE_COMPRESSION_NONE, "got %d, expected FILE_COMPRESSION_NONE\n", type); DeleteFileA(source); create_source_file(source, comp_cab_lzx, sizeof(comp_cab_lzx)); ret = pSetupGetFileCompressionInfoExA(source, name, sizeof(name), &required_len, &source_size, &target_size, &type); ok(ret, "SetupGetFileCompressionInfoEx failed unexpectedly: %d\n", ret); ok(!lstrcmpA(name, source), "got %s, expected %s\n", name, source); ok(required_len == lstrlenA(source) + 1, "got %d, expected %d\n", required_len, lstrlenA(source) + 1); ok(source_size == sizeof(comp_cab_lzx), "got %d\n", source_size); ok(target_size == sizeof(uncompressed), "got %d\n", target_size); ok(type == FILE_COMPRESSION_MSZIP, "got %d, expected FILE_COMPRESSION_MSZIP\n", type); DeleteFileA(source); create_source_file(source, comp_cab_zip, sizeof(comp_cab_zip)); ret = pSetupGetFileCompressionInfoExA(source, name, sizeof(name), &required_len, &source_size, &target_size, &type); ok(ret, "SetupGetFileCompressionInfoEx failed unexpectedly: %d\n", ret); ok(!lstrcmpA(name, source), "got %s, expected %s\n", name, source); ok(required_len == lstrlenA(source) + 1, "got %d, expected %d\n", required_len, lstrlenA(source) + 1); ok(source_size == sizeof(comp_cab_zip), "got %d\n", source_size); ok(target_size == sizeof(uncompressed), "got %d\n", target_size); ok(type == FILE_COMPRESSION_MSZIP, "got %d, expected FILE_COMPRESSION_MSZIP\n", type); DeleteFileA(source); }
static void test_SetupDecompressOrCopyFile(void) { DWORD ret; char source[MAX_PATH], target[MAX_PATH], temp[MAX_PATH], *p; UINT type; GetTempPathA(sizeof(temp), temp); GetTempFileNameA(temp, "doc", 0, source); GetTempFileNameA(temp, "doc", 0, target); /* parameter tests */ create_source_file(source, uncompressed, sizeof(uncompressed)); ret = SetupDecompressOrCopyFileA(NULL, NULL, NULL); ok(ret == ERROR_INVALID_PARAMETER, "SetupDecompressOrCopyFile failed unexpectedly\n"); type = FILE_COMPRESSION_NONE; ret = SetupDecompressOrCopyFileA(NULL, target, &type); ok(ret == ERROR_INVALID_PARAMETER, "SetupDecompressOrCopyFile failed unexpectedly\n"); ret = SetupDecompressOrCopyFileA(source, NULL, &type); ok(ret == ERROR_INVALID_PARAMETER, "SetupDecompressOrCopyFile failed unexpectedly\n"); type = 5; /* try an invalid compression type */ ret = SetupDecompressOrCopyFileA(source, target, &type); ok(ret == ERROR_INVALID_PARAMETER, "SetupDecompressOrCopyFile failed unexpectedly\n"); DeleteFileA(target); /* no compression tests */ ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); /* try overwriting existing file */ ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); DeleteFileA(target); type = FILE_COMPRESSION_NONE; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); DeleteFileA(target); type = FILE_COMPRESSION_WINLZA; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); DeleteFileA(target); /* lz compression tests */ create_source_file(source, comp_lzx, sizeof(comp_lzx)); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); DeleteFileA(target); /* zip compression tests */ create_source_file(source, comp_zip, sizeof(comp_zip)); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, comp_zip, sizeof(comp_zip)), "incorrect target file\n"); DeleteFileA(target); /* cabinet compression tests */ create_source_file(source, comp_cab_zip, sizeof(comp_cab_zip)); p = strrchr(target, '\\'); lstrcpyA(p + 1, "wine"); ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); /* try overwriting existing file */ ret = SetupDecompressOrCopyFileA(source, target, NULL); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); /* try zip compression */ type = FILE_COMPRESSION_MSZIP; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, uncompressed, sizeof(uncompressed)), "incorrect target file\n"); /* try no compression */ type = FILE_COMPRESSION_NONE; ret = SetupDecompressOrCopyFileA(source, target, &type); ok(!ret, "SetupDecompressOrCopyFile failed unexpectedly: %d\n", ret); ok(compare_file_data(target, comp_cab_zip, sizeof(comp_cab_zip)), "incorrect target file\n"); DeleteFileA(target); DeleteFileA(source); }