From f781782dd67077478e117c61dca4ea5eefce3544 Mon Sep 17 00:00:00 2001 From: "slightlyoff@chromium.org" <slightlyoff@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Thu, 24 Sep 2009 05:11:58 +0000 Subject: Initial import of the Chrome Frame codebase. Integration in chrome.gyp coming in a separate CL. BUG=None TEST=None Review URL: http://codereview.chromium.org/218019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27042 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome_frame/test/util_unittests.cc | 120 ++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 chrome_frame/test/util_unittests.cc (limited to 'chrome_frame/test/util_unittests.cc') diff --git a/chrome_frame/test/util_unittests.cc b/chrome_frame/test/util_unittests.cc new file mode 100644 index 0000000..dc3d72d --- /dev/null +++ b/chrome_frame/test/util_unittests.cc @@ -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)); + } +} -- cgit v1.1