| Index: chrome_frame/test/util_unittests.cc
|
| ===================================================================
|
| --- chrome_frame/test/util_unittests.cc (revision 0)
|
| +++ chrome_frame/test/util_unittests.cc (revision 0)
|
| @@ -0,0 +1,120 @@
|
| +// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "base/file_version_info.h"
|
| +#include "chrome_frame/test/chrome_frame_unittests.h"
|
| +#include "chrome_frame/utils.h"
|
| +
|
| +const wchar_t kChannelName[] = L"-dev";
|
| +const wchar_t kSuffix[] = L"-fix";
|
| +
|
| +TEST(UtilTests, AppendSuffixToChannelNameTest) {
|
| + std::wstring str_base;
|
| + std::wstring channel_name(kChannelName);
|
| + std::wstring suffix(kSuffix);
|
| +
|
| + str_base = L"2.0-dev-bar";
|
| + EXPECT_TRUE(AppendSuffixToChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev-fix-bar", str_base.c_str());
|
| +
|
| + str_base = L"2.0-dev-fix-bar";
|
| + EXPECT_FALSE(AppendSuffixToChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev-fix-bar", str_base.c_str());
|
| +
|
| + str_base = L"2.0-dev-bar-dev-bar";
|
| + EXPECT_TRUE(AppendSuffixToChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev-fix-bar-dev-bar", str_base.c_str());
|
| +
|
| + str_base = L"2.0";
|
| + EXPECT_FALSE(AppendSuffixToChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0", str_base.c_str());
|
| +
|
| + str_base = L"2.0-devvvv";
|
| + EXPECT_TRUE(AppendSuffixToChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev-fixvvv", str_base.c_str());
|
| +}
|
| +
|
| +TEST(UtilTests, RemoveSuffixFromStringTest) {
|
| + std::wstring str_base;
|
| + std::wstring channel_name(kChannelName);
|
| + std::wstring suffix(kSuffix);
|
| +
|
| + str_base = L"2.0-dev-fix";
|
| + EXPECT_TRUE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev", str_base.c_str());
|
| +
|
| + str_base = L"2.0-dev-fix-full";
|
| + EXPECT_TRUE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev-full", str_base.c_str());
|
| +
|
| + str_base = L"2.0";
|
| + EXPECT_FALSE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0", str_base.c_str());
|
| +
|
| + str_base = L"2.0-dev";
|
| + EXPECT_FALSE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev", str_base.c_str());
|
| +
|
| + str_base = L"2.0-fix";
|
| + EXPECT_FALSE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-fix", str_base.c_str());
|
| +
|
| + str_base = L"2.0-full-fix";
|
| + EXPECT_FALSE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-full-fix", str_base.c_str());
|
| +
|
| + str_base = L"2.0-dev-dev-fix";
|
| + EXPECT_TRUE(RemoveSuffixFromChannelName(&str_base, channel_name, suffix));
|
| + EXPECT_STREQ(L"2.0-dev-dev", str_base.c_str());
|
| +}
|
| +
|
| +TEST(UtilTests, GetModuleVersionTest) {
|
| + HMODULE mod = GetModuleHandle(L"kernel32.dll");
|
| + EXPECT_NE(mod, static_cast<HMODULE>(NULL));
|
| + wchar_t path[MAX_PATH] = {0};
|
| + GetModuleFileName(mod, path, arraysize(path));
|
| +
|
| + // Use the method that goes to disk
|
| + scoped_ptr<FileVersionInfo> base_info(
|
| + FileVersionInfo::CreateFileVersionInfo(path));
|
| + EXPECT_TRUE(base_info.get() != NULL);
|
| +
|
| + // Use the method that doesn't go to disk
|
| + uint32 low = 0, high = 0;
|
| + EXPECT_TRUE(GetModuleVersion(mod, &high, &low));
|
| + EXPECT_NE(high, 0);
|
| + EXPECT_NE(low, 0);
|
| +
|
| + // Make sure they give the same results.
|
| + VS_FIXEDFILEINFO* fixed_info = base_info->fixed_file_info();
|
| + EXPECT_TRUE(fixed_info != NULL);
|
| +
|
| + EXPECT_EQ(fixed_info->dwFileVersionMS, static_cast<DWORD>(high));
|
| + EXPECT_EQ(fixed_info->dwFileVersionLS, static_cast<DWORD>(low));
|
| +}
|
| +
|
| +TEST(UtilTests, HaveSameOrigin) {
|
| + struct OriginCompare {
|
| + const char* a;
|
| + const char* b;
|
| + bool same_origin;
|
| + } test_cases[] = {
|
| + { "", "", true },
|
| + { "*", "*", true },
|
| + { "*", "+", false },
|
| + { "http://www.google.com/", "http://www.google.com/", true },
|
| + { "http://www.google.com", "http://www.google.com/", true },
|
| + { "http://www.google.com:80/", "http://www.google.com/", true },
|
| + { "http://www.google.com:8080/", "http://www.google.com/", false },
|
| + { "https://www.google.com/", "http://www.google.com/", false },
|
| + { "http://docs.google.com/", "http://www.google.com/", false },
|
| + { "https://www.google.com/", "https://www.google.com:443/", true },
|
| + { "https://www.google.com/", "https://www.google.com:443", true },
|
| + };
|
| +
|
| + for (int i = 0; i < arraysize(test_cases); ++i) {
|
| + const OriginCompare& test = test_cases[i];
|
| + EXPECT_EQ(test.same_origin, HaveSameOrigin(test.a, test.b));
|
| + }
|
| +}
|
|
|