Adds Solaris support (by Hady Zalek)
This commit is contained in:
@@ -74,9 +74,7 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
|
||||
#include <pthread.h>
|
||||
#endif // GTEST_HAS_PTHREAD
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#include <map>
|
||||
#endif
|
||||
|
||||
namespace testing {
|
||||
namespace internal {
|
||||
@@ -1388,12 +1386,16 @@ TEST(StringTest, CanBeAssignedSelf) {
|
||||
EXPECT_STREQ("hello", dest.c_str());
|
||||
}
|
||||
|
||||
// Sun Studio < 12 incorrectly rejects this code due to an overloading
|
||||
// ambiguity.
|
||||
#if !(defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
|
||||
// Tests streaming a String.
|
||||
TEST(StringTest, Streams) {
|
||||
EXPECT_EQ(StreamableToString(String()), "(null)");
|
||||
EXPECT_EQ(StreamableToString(String("")), "");
|
||||
EXPECT_EQ(StreamableToString(String("a\0b", 3)), "a\\0b");
|
||||
}
|
||||
#endif
|
||||
|
||||
// Tests that String::Format() works.
|
||||
TEST(StringTest, FormatWorks) {
|
||||
@@ -2050,7 +2052,7 @@ static void SetEnv(const char* name, const char* value) {
|
||||
#if GTEST_OS_WINDOWS_MOBILE
|
||||
// Environment variables are not supported on Windows CE.
|
||||
return;
|
||||
#elif defined(__BORLANDC__)
|
||||
#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
|
||||
// C++Builder's putenv only stores a pointer to its parameter; we have to
|
||||
// ensure that the string remains valid as long as it might be needed.
|
||||
// We use an std::map to do so.
|
||||
@@ -2063,7 +2065,11 @@ static void SetEnv(const char* name, const char* value) {
|
||||
prev_env = added_env[name];
|
||||
}
|
||||
added_env[name] = new String((Message() << name << "=" << value).GetString());
|
||||
putenv(added_env[name]->c_str());
|
||||
|
||||
// The standard signature of putenv accepts a 'char*' argument. Other
|
||||
// implementations, like C++Builder's, accept a 'const char*'.
|
||||
// We cast away the 'const' since that would work for both variants.
|
||||
putenv(const_cast<char*>(added_env[name]->c_str()));
|
||||
delete prev_env;
|
||||
#elif GTEST_OS_WINDOWS // If we are on Windows proper.
|
||||
_putenv((Message() << name << "=" << value).GetString().c_str());
|
||||
@@ -3013,7 +3019,10 @@ TEST_F(FloatTest, AlmostZeros) {
|
||||
// In C++Builder, names within local classes (such as used by
|
||||
// EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
|
||||
// scoping class. Use a static local alias as a workaround.
|
||||
static const FloatTest::TestValues& v(this->values_);
|
||||
// We use the assignment syntax since some compilers, like Sun Studio,
|
||||
// don't allow initializing references using construction syntax
|
||||
// (parentheses).
|
||||
static const FloatTest::TestValues& v = this->values_;
|
||||
|
||||
EXPECT_FLOAT_EQ(0.0, v.close_to_positive_zero);
|
||||
EXPECT_FLOAT_EQ(-0.0, v.close_to_negative_zero);
|
||||
@@ -3065,7 +3074,10 @@ TEST_F(FloatTest, NaN) {
|
||||
// In C++Builder, names within local classes (such as used by
|
||||
// EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
|
||||
// scoping class. Use a static local alias as a workaround.
|
||||
static const FloatTest::TestValues& v(this->values_);
|
||||
// We use the assignment syntax since some compilers, like Sun Studio,
|
||||
// don't allow initializing references using construction syntax
|
||||
// (parentheses).
|
||||
static const FloatTest::TestValues& v = this->values_;
|
||||
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(v.nan1, v.nan1),
|
||||
"v.nan1");
|
||||
@@ -3180,7 +3192,10 @@ TEST_F(DoubleTest, AlmostZeros) {
|
||||
// In C++Builder, names within local classes (such as used by
|
||||
// EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
|
||||
// scoping class. Use a static local alias as a workaround.
|
||||
static const DoubleTest::TestValues& v(this->values_);
|
||||
// We use the assignment syntax since some compilers, like Sun Studio,
|
||||
// don't allow initializing references using construction syntax
|
||||
// (parentheses).
|
||||
static const DoubleTest::TestValues& v = this->values_;
|
||||
|
||||
EXPECT_DOUBLE_EQ(0.0, v.close_to_positive_zero);
|
||||
EXPECT_DOUBLE_EQ(-0.0, v.close_to_negative_zero);
|
||||
@@ -3230,7 +3245,10 @@ TEST_F(DoubleTest, NaN) {
|
||||
// In C++Builder, names within local classes (such as used by
|
||||
// EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
|
||||
// scoping class. Use a static local alias as a workaround.
|
||||
static const DoubleTest::TestValues& v(this->values_);
|
||||
// We use the assignment syntax since some compilers, like Sun Studio,
|
||||
// don't allow initializing references using construction syntax
|
||||
// (parentheses).
|
||||
static const DoubleTest::TestValues& v = this->values_;
|
||||
|
||||
// Nokia's STLport crashes if we try to output infinity or NaN.
|
||||
EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(v.nan1, v.nan1),
|
||||
@@ -4015,7 +4033,8 @@ TEST(AssertionTest, ExpectWorksWithUncopyableObject) {
|
||||
// The version of gcc used in XCode 2.2 has a bug and doesn't allow
|
||||
// anonymous enums in assertions. Therefore the following test is not
|
||||
// done on Mac.
|
||||
#if !GTEST_OS_MAC
|
||||
// Sun Studio also rejects this code.
|
||||
#if !GTEST_OS_MAC && !defined(__SUNPRO_CC)
|
||||
|
||||
// Tests using assertions with anonymous enums.
|
||||
enum {
|
||||
@@ -4060,7 +4079,7 @@ TEST(AssertionTest, AnonymousEnum) {
|
||||
"Value of: CASE_B");
|
||||
}
|
||||
|
||||
#endif // !GTEST_OS_MAC
|
||||
#endif // !GTEST_OS_MAC && !defined(__SUNPRO_CC)
|
||||
|
||||
#if GTEST_OS_WINDOWS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user