From 70e44a8e7fe34498acb78e8abf16468eba8614b2 Mon Sep 17 00:00:00 2001 From: vitaut Date: Tue, 9 Feb 2016 11:31:04 -0800 Subject: [PATCH] Simplify locale mock --- test/posix-mock-test.cc | 42 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/test/posix-mock-test.cc b/test/posix-mock-test.cc index 86f98f7b..e8788e49 100644 --- a/test/posix-mock-test.cc +++ b/test/posix-mock-test.cc @@ -456,26 +456,21 @@ TEST(BufferedFileTest, FilenoNoRetry) { template struct ScopedMock : testing::StrictMock { - private: - Mock *&global_mock_; - - public: - explicit ScopedMock(Mock *&global_mock) : global_mock_(global_mock) { - global_mock = this; - } - ~ScopedMock() { global_mock_ = 0; } + ScopedMock() { Mock::instance = this; } + ~ScopedMock() { Mock::instance = 0; } }; -struct TestMock {}; +struct TestMock { + static TestMock *instance; +} *TestMock::instance; TEST(ScopedMock, Scope) { - TestMock *global_mock = 0; { - ScopedMock mock(global_mock); - EXPECT_EQ(&mock, global_mock); + ScopedMock mock; + EXPECT_EQ(&mock, TestMock::instance); TestMock © = mock; } - EXPECT_EQ(0, global_mock); + EXPECT_EQ(0, TestMock::instance); } #ifdef FMT_LOCALE @@ -483,30 +478,31 @@ TEST(ScopedMock, Scope) { typedef fmt::Locale::Type LocaleType; struct LocaleMock { + static LocaleMock *instance; MOCK_METHOD3(newlocale, LocaleType (int category_mask, const char *locale, LocaleType base)); MOCK_METHOD1(freelocale, void (LocaleType locale)); MOCK_METHOD3(strtod_l, double (const char *nptr, char **endptr, LocaleType locale)); -} *locale_mock; +} *LocaleMock::instance; #ifdef _MSC_VER _locale_t _create_locale(int category, const char *locale) { - return locale_mock->newlocale(category, locale, 0); + return LocaleMock::instance->newlocale(category, locale, 0); } void _free_locale(_locale_t locale) { - locale_mock->freelocale(locale); + LocaleMock::instance->freelocale(locale); } double _strtod_l(const char *nptr, char **endptr, _locale_t locale) { - return locale_mock->strtod_l(nptr, endptr, locale); + return LocaleMock::instance->strtod_l(nptr, endptr, locale); } #endif LocaleType newlocale(int category_mask, const char *locale, LocaleType base) { - return locale_mock->newlocale(category_mask, locale, base); + return LocaleMock::instance->newlocale(category_mask, locale, base); } #ifdef __APPLE__ @@ -516,15 +512,15 @@ typedef void FreeLocaleResult; #endif FreeLocaleResult freelocale(LocaleType locale) { - locale_mock->freelocale(locale); + LocaleMock::instance->freelocale(locale); } double strtod_l(const char *nptr, char **endptr, LocaleType locale) { - return locale_mock->strtod_l(nptr, endptr, locale); + return LocaleMock::instance->strtod_l(nptr, endptr, locale); } TEST(LocaleTest, LocaleMock) { - ScopedMock mock(locale_mock); + ScopedMock mock; LocaleType locale = reinterpret_cast(11); EXPECT_CALL(mock, newlocale(222, StrEq("foo"), locale)); newlocale(222, "foo", locale); @@ -534,7 +530,7 @@ TEST(LocaleTest, Locale) { #ifndef LC_NUMERIC_MASK enum { LC_NUMERIC_MASK = LC_NUMERIC }; #endif - ScopedMock mock(locale_mock); + ScopedMock mock; LocaleType impl = reinterpret_cast(42); EXPECT_CALL(mock, newlocale(LC_NUMERIC_MASK, StrEq("C"), 0)) .WillOnce(Return(impl)); @@ -544,7 +540,7 @@ TEST(LocaleTest, Locale) { } TEST(LocaleTest, Strtod) { - ScopedMock mock(locale_mock); + ScopedMock mock; EXPECT_CALL(mock, newlocale(_, _, _)) .WillOnce(Return(reinterpret_cast(42))); EXPECT_CALL(mock, freelocale(_));