Makes gtest work on Windows Mobile and Symbian. By Mika Raento.
This commit is contained in:
		@@ -51,7 +51,11 @@
 | 
			
		||||
#undef GTEST_IMPLEMENTATION
 | 
			
		||||
 | 
			
		||||
#ifdef GTEST_OS_WINDOWS
 | 
			
		||||
#ifdef _WIN32_WCE
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <direct.h>
 | 
			
		||||
#endif  // _WIN32_WCE
 | 
			
		||||
#define PATH_SEP "\\"
 | 
			
		||||
#else
 | 
			
		||||
#define PATH_SEP "/"
 | 
			
		||||
@@ -61,6 +65,32 @@ namespace testing {
 | 
			
		||||
namespace internal {
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32_WCE
 | 
			
		||||
// Windows CE doesn't have the remove C function.
 | 
			
		||||
int remove(const char* path) {
 | 
			
		||||
  LPCWSTR wpath = String::AnsiToUtf16(path);
 | 
			
		||||
  int ret = DeleteFile(wpath) ? 0 : -1;
 | 
			
		||||
  delete [] wpath;
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
// Windows CE doesn't have the _rmdir C function.
 | 
			
		||||
int _rmdir(const char* path) {
 | 
			
		||||
  FilePath filepath(path);
 | 
			
		||||
  LPCWSTR wpath = String::AnsiToUtf16(
 | 
			
		||||
      filepath.RemoveTrailingPathSeparator().c_str());
 | 
			
		||||
  int ret = RemoveDirectory(wpath) ? 0 : -1;
 | 
			
		||||
  delete [] wpath;
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#elif defined(GTEST_LINUX_GOOGLE3_MODE)
 | 
			
		||||
// Creates a temporary directory and returns its path.
 | 
			
		||||
const char* MakeTempDir() {
 | 
			
		||||
  static char dir_name[] = "gtest-filepath_test_tmpXXXXXX";
 | 
			
		||||
  return mkdtemp(dir_name);
 | 
			
		||||
}
 | 
			
		||||
#endif  // _WIN32_WCE
 | 
			
		||||
 | 
			
		||||
// FilePath's functions used by UnitTestOptions::GetOutputFile.
 | 
			
		||||
 | 
			
		||||
// RemoveDirectoryName "" -> ""
 | 
			
		||||
@@ -102,8 +132,14 @@ TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileName) {
 | 
			
		||||
 | 
			
		||||
// RemoveFileName "" -> "./"
 | 
			
		||||
TEST(RemoveFileNameTest, EmptyName) {
 | 
			
		||||
#ifdef _WIN32_WCE
 | 
			
		||||
  // On Windows CE, we use the root as the current directory.
 | 
			
		||||
  EXPECT_STREQ(PATH_SEP,
 | 
			
		||||
      FilePath("").RemoveFileName().c_str());
 | 
			
		||||
#else
 | 
			
		||||
  EXPECT_STREQ("." PATH_SEP,
 | 
			
		||||
      FilePath("").RemoveFileName().c_str());
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RemoveFileName "adir/" -> "adir/"
 | 
			
		||||
 
 | 
			
		||||
@@ -295,7 +295,9 @@ TEST(ListTest, InsertAfterNotAtBeginning) {
 | 
			
		||||
TEST(StringTest, Constructors) {
 | 
			
		||||
  // Default ctor.
 | 
			
		||||
  String s1;
 | 
			
		||||
  EXPECT_EQ(NULL, s1.c_str());
 | 
			
		||||
  // We aren't using EXPECT_EQ(NULL, s1.c_str()) because comparing
 | 
			
		||||
  // pointers with NULL isn't supported on all platforms.
 | 
			
		||||
  EXPECT_TRUE(NULL == s1.c_str());
 | 
			
		||||
 | 
			
		||||
  // Implicitly constructs from a C-string.
 | 
			
		||||
  String s2 = "Hi";
 | 
			
		||||
@@ -442,6 +444,31 @@ TEST(StringTest, ShowWideCStringQuoted) {
 | 
			
		||||
               String::ShowWideCStringQuoted(L"foo").c_str());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32_WCE
 | 
			
		||||
TEST(StringTest, AnsiAndUtf16Null) {
 | 
			
		||||
  EXPECT_EQ(NULL, String::AnsiToUtf16(NULL));
 | 
			
		||||
  EXPECT_EQ(NULL, String::Utf16ToAnsi(NULL));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(StringTest, AnsiAndUtf16ConvertBasic) {
 | 
			
		||||
  const char* ansi = String::Utf16ToAnsi(L"str");
 | 
			
		||||
  EXPECT_STREQ("str", ansi);
 | 
			
		||||
  delete [] ansi;
 | 
			
		||||
  const WCHAR* utf16 = String::AnsiToUtf16("str");
 | 
			
		||||
  EXPECT_TRUE(wcsncmp(L"str", utf16, 3) == 0);
 | 
			
		||||
  delete [] utf16;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(StringTest, AnsiAndUtf16ConvertPathChars) {
 | 
			
		||||
  const char* ansi = String::Utf16ToAnsi(L".:\\ \"*?");
 | 
			
		||||
  EXPECT_STREQ(".:\\ \"*?", ansi);
 | 
			
		||||
  delete [] ansi;
 | 
			
		||||
  const WCHAR* utf16 = String::AnsiToUtf16(".:\\ \"*?");
 | 
			
		||||
  EXPECT_TRUE(wcsncmp(L".:\\ \"*?", utf16, 3) == 0);
 | 
			
		||||
  delete [] utf16;
 | 
			
		||||
}
 | 
			
		||||
#endif  // _WIN32_WCE
 | 
			
		||||
 | 
			
		||||
#endif  // GTEST_OS_WINDOWS
 | 
			
		||||
 | 
			
		||||
// Tests TestProperty construction.
 | 
			
		||||
@@ -2865,7 +2892,6 @@ TEST(StreamableTest, BasicIoManip) {
 | 
			
		||||
  }, "Line 1.\nA NUL char \\0 in line 2.");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Tests the macros that haven't been covered so far.
 | 
			
		||||
 | 
			
		||||
void AddFailureHelper(bool* aborted) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user