1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <windows.h>
6
7#include "base/files/file_path.h"
8#include "base/files/scoped_temp_dir.h"
9#include "base/path_service.h"
10#include "chrome/installer/mini_installer/decompress.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13TEST(MiniDecompressTest, ExpandTest) {
14  base::FilePath source_path;
15  PathService::Get(base::DIR_SOURCE_ROOT, &source_path);
16  source_path = source_path.Append(FILE_PATH_LITERAL("chrome"))
17      .Append(FILE_PATH_LITERAL("installer"))
18      .Append(FILE_PATH_LITERAL("test"))
19      .Append(FILE_PATH_LITERAL("data"))
20      .Append(FILE_PATH_LITERAL("SETUP.EX_"));
21
22  // Prepare a temp folder that will be automatically deleted along with
23  // our temporary test data.
24  base::ScopedTempDir temp_dir;
25  EXPECT_TRUE(temp_dir.CreateUniqueTempDir());
26  base::FilePath dest_path(
27      temp_dir.path().Append(FILE_PATH_LITERAL("setup.exe")));
28
29  // Decompress our test file.
30  EXPECT_TRUE(mini_installer::Expand(source_path.value().c_str(),
31                                     dest_path.value().c_str()));
32
33  // Check if the expanded file is a valid executable.
34  DWORD type = static_cast<DWORD>(-1);
35  EXPECT_TRUE(GetBinaryType(dest_path.value().c_str(), &type));
36  EXPECT_EQ(SCS_32BIT_BINARY, type);
37}
38