Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1165)

Unified Diff: base/win/pe_image_unittest.cc

Issue 10408084: Lump client and server versions of Windows together. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Also do away with Server 2003 Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/win/windows_version.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/win/pe_image_unittest.cc
diff --git a/base/win/pe_image_unittest.cc b/base/win/pe_image_unittest.cc
index f0fb61d23ff187fb71285c54e413c5197cb44b51..e308eaea77e2e9425152aa60d9619e3da52c83a9 100644
--- a/base/win/pe_image_unittest.cc
+++ b/base/win/pe_image_unittest.cc
@@ -83,6 +83,16 @@ bool DelayImportChunksCallback(const PEImage &image,
return true;
}
+// Identifiers for the set of supported expectations.
+enum ExpectationSet {
+ WIN_2K_SET,
+ WIN_XP_SET,
+ WIN_VISTA_SET,
+ WIN_7_SET,
+ WIN_8_SET,
+ UNSUPPORTED_SET,
+};
+
// We'll be using some known values for the tests.
enum Value {
sections = 0,
@@ -94,6 +104,20 @@ enum Value {
relocs
};
+ExpectationSet GetExpectationSet(DWORD os) {
+ if (os == 50)
+ return WIN_2K_SET;
+ if (os == 51)
+ return WIN_XP_SET;
+ if (os == 60)
+ return WIN_VISTA_SET;
+ if (os == 61)
+ return WIN_7_SET;
+ if (os >= 62)
+ return WIN_8_SET;
+ return UNSUPPORTED_SET;
+}
+
// Retrieves the expected value from advapi32.dll based on the OS.
int GetExpectedValue(Value value, DWORD os) {
const int xp_delay_dlls = 2;
@@ -143,31 +167,24 @@ int GetExpectedValue(Value value, DWORD os) {
vista_delay_imports, win7_delay_imports, win8_delay_imports},
{w2k_relocs, xp_relocs, vista_relocs, win7_relocs, win8_relocs}
};
+ COMPILE_ASSERT(arraysize(expected[0]) == UNSUPPORTED_SET,
+ expected_value_set_mismatch);
if (value > relocs)
return 0;
- if (50 == os)
- os = 0; // 5.0
- else if (51 == os || 52 == os)
- os = 1;
- else if (os == 60)
- os = 2; // 6.x
- else if (os == 61)
- os = 3;
- else if (os >= 62)
- os = 4;
- else
- return 0;
+ ExpectationSet expected_set = GetExpectationSet(os);
+ if (expected_set >= arraysize(expected)) {
+ // This should never happen. Log a failure if it does.
+ EXPECT_NE(UNSUPPORTED_SET, expected_set);
+ expected_set = WIN_2K_SET;
+ }
- return expected[value][os];
+ return expected[value][expected_set];
}
// Tests that we are able to enumerate stuff from a PE file, and that
// the actual number of items found is within the expected range.
TEST(PEImageTest, EnumeratesPE) {
- // Windows Server 2003 is not supported as a test environment for this test.
- if (base::win::GetVersion() == base::win::VERSION_SERVER_2003)
- return;
HMODULE module = LoadLibrary(L"advapi32.dll");
ASSERT_TRUE(NULL != module);
@@ -178,6 +195,10 @@ TEST(PEImageTest, EnumeratesPE) {
DWORD os = pe.GetNTHeaders()->OptionalHeader.MajorOperatingSystemVersion;
os = os * 10 + pe.GetNTHeaders()->OptionalHeader.MinorOperatingSystemVersion;
+ // Skip this test for unsupported OS versions.
+ if (GetExpectationSet(os) == UNSUPPORTED_SET)
+ return;
+
pe.EnumSections(SectionsCallback, &count);
EXPECT_EQ(GetExpectedValue(sections, os), count);
« no previous file with comments | « no previous file | base/win/windows_version.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698