aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2009-03-11 23:37:56 +0000
committerzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2009-03-11 23:37:56 +0000
commit5b5d62f19019a398167df1f1b59279e049bf24ce (patch)
tree1b4307403525a55b30c6411b4cad6430660817fc
parent93ad3551c060599af0d4789ee0584f1652abf80b (diff)
downloadgoogletest-5b5d62f19019a398167df1f1b59279e049bf24ce.tar.gz
googletest-5b5d62f19019a398167df1f1b59279e049bf24ce.tar.bz2
googletest-5b5d62f19019a398167df1f1b59279e049bf24ce.zip
Makes the code compile on Windows CE.
-rw-r--r--include/gmock/gmock-actions.h12
-rw-r--r--src/gmock-printers.cc12
-rw-r--r--src/gmock_main.cc13
-rw-r--r--test/gmock-actions_test.cc7
-rw-r--r--test/gmock_link_test.h12
5 files changed, 50 insertions, 6 deletions
diff --git a/include/gmock/gmock-actions.h b/include/gmock/gmock-actions.h
index 823054bf..a228eea6 100644
--- a/include/gmock/gmock-actions.h
+++ b/include/gmock/gmock-actions.h
@@ -38,7 +38,11 @@
#include <algorithm>
#include <string>
+
+#ifndef _WIN32_WCE
#include <errno.h>
+#endif
+
#include <gmock/internal/gmock-internal-utils.h>
#include <gmock/internal/gmock-port.h>
@@ -601,6 +605,8 @@ class AssignAction {
const T2 value_;
};
+#ifndef _WIN32_WCE
+
// Implements the SetErrnoAndReturn action to simulate return from
// various system calls and libc functions.
template <typename T>
@@ -619,6 +625,8 @@ class SetErrnoAndReturnAction {
const T result_;
};
+#endif // _WIN32_WCE
+
// Implements the SetArgumentPointee<N>(x) action for any function
// whose N-th argument (0-based) is a pointer to x's type. The
// template parameter kIsProto is true iff type A is ProtocolMessage,
@@ -878,6 +886,8 @@ PolymorphicAction<internal::AssignAction<T1, T2> > Assign(T1* ptr, T2 val) {
return MakePolymorphicAction(internal::AssignAction<T1, T2>(ptr, val));
}
+#ifndef _WIN32_WCE
+
// Creates an action that sets errno and returns the appropriate error.
template <typename T>
PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
@@ -886,6 +896,8 @@ SetErrnoAndReturn(int errval, T result) {
internal::SetErrnoAndReturnAction<T>(errval, result));
}
+#endif // _WIN32_WCE
+
// Various overloads for InvokeWithoutArgs().
// Creates an action that invokes 'function_impl' with no argument.
diff --git a/src/gmock-printers.cc b/src/gmock-printers.cc
index 495717dc..e6d4001a 100644
--- a/src/gmock-printers.cc
+++ b/src/gmock-printers.cc
@@ -55,7 +55,9 @@ namespace {
using ::std::ostream;
-#if GTEST_OS_WINDOWS
+#ifdef _WIN32_WCE
+#define snprintf _snprintf
+#elif GTEST_OS_WINDOWS
#define snprintf _snprintf_s
#endif
@@ -157,9 +159,11 @@ static void PrintAsWideCharLiteralTo(wchar_t c, ostream* os) {
*os << "\\v";
break;
default:
- // isprint() takes an int and requires it to be either EOF or in
- // the range [0, 255]. We check that c is in this range before calling it.
- if ((c & 0xFF) == c && isprint(c)) {
+ // Checks whether c is printable or not. Printable characters are in
+ // the range [0x20,0x7E].
+ // We test the value of c directly instead of calling isprint(), as
+ // isprint() is buggy on Windows mobile.
+ if (0x20 <= c && c <= 0x7E) {
*os << static_cast<char>(c);
} else {
// Buffer size enough for the maximum number of digits and \0.
diff --git a/src/gmock_main.cc b/src/gmock_main.cc
index a97e9532..85689d5d 100644
--- a/src/gmock_main.cc
+++ b/src/gmock_main.cc
@@ -33,7 +33,18 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>
-int main(int argc, char **argv) {
+// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
+// causes a link error when _tmain is defined in a static library and UNICODE
+// is enabled. For this reason instead of _tmain, main function is used on
+// Windows. See the following link to track the current status of this bug:
+// http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=394464 // NOLINT
+#ifdef _WIN32_WCE
+#include <tchar.h> // NOLINT
+
+int _tmain(int argc, TCHAR** argv) {
+#else
+int main(int argc, char** argv) {
+#endif // _WIN32_WCE
std::cout << "Running main() from gmock_main.cc\n";
// Since Google Mock depends on Google Test, InitGoogleMock() is
// also responsible for initializing Google Test. Therefore there's
diff --git a/test/gmock-actions_test.cc b/test/gmock-actions_test.cc
index 077681b0..e4939e1a 100644
--- a/test/gmock-actions_test.cc
+++ b/test/gmock-actions_test.cc
@@ -69,7 +69,10 @@ using testing::ReturnNull;
using testing::ReturnRef;
using testing::SetArgumentPointee;
using testing::SetArrayArgument;
+
+#ifndef _WIN32_WCE
using testing::SetErrnoAndReturn;
+#endif // _WIN32_WCE
#if GMOCK_HAS_PROTOBUF_
using testing::internal::TestMessage;
@@ -951,6 +954,8 @@ TEST(AssignTest, CompatibleTypes) {
EXPECT_DOUBLE_EQ(5, x);
}
+#ifndef _WIN32_WCE
+
class SetErrnoAndReturnTest : public testing::Test {
protected:
virtual void SetUp() { errno = 0; }
@@ -976,4 +981,6 @@ TEST_F(SetErrnoAndReturnTest, CompatibleTypes) {
EXPECT_EQ(EINVAL, errno);
}
+#endif // _WIN32_WCE
+
} // Unnamed namespace
diff --git a/test/gmock_link_test.h b/test/gmock_link_test.h
index 769c85d2..96cd79fb 100644
--- a/test/gmock_link_test.h
+++ b/test/gmock_link_test.h
@@ -116,7 +116,10 @@
#include <gmock/gmock.h>
+#ifndef _WIN32_WCE
#include <errno.h>
+#endif
+
#include <gtest/gtest.h>
#include <iostream>
#include <vector>
@@ -161,7 +164,6 @@ using testing::ReturnNull;
using testing::ReturnRef;
using testing::SetArgumentPointee;
using testing::SetArrayArgument;
-using testing::SetErrnoAndReturn;
using testing::StartsWith;
using testing::StrCaseEq;
using testing::StrCaseNe;
@@ -173,6 +175,10 @@ using testing::WithArg;
using testing::WithArgs;
using testing::WithoutArgs;
+#ifndef _WIN32_WCE
+using testing::SetErrnoAndReturn;
+#endif // _WIN32_WCE
+
#if GTEST_HAS_EXCEPTIONS
using testing::Throw;
#endif // GTEST_HAS_EXCEPTIONS
@@ -290,6 +296,8 @@ TEST(LinkTest, TestSetArrayArgument) {
mock.VoidFromString(&ch);
}
+#ifndef _WIN32_WCE
+
// Tests the linkage of the SetErrnoAndReturn action.
TEST(LinkTest, TestSetErrnoAndReturn) {
Mock mock;
@@ -300,6 +308,8 @@ TEST(LinkTest, TestSetErrnoAndReturn) {
errno = saved_errno;
}
+#endif // _WIN32_WCE
+
// Tests the linkage of the Invoke(function) and Invoke(object, method) actions.
TEST(LinkTest, TestInvoke) {
Mock mock;