mirror of
https://github.com/google/googletest.git
synced 2024-12-27 10:11:03 +08:00
Fix gmock_output_test when using MSVC
std::pair is printed as "struct std::pair<int,bool>" when using MSVC vs "std::pair<int,bool>" with other compilers. Switch to "std::tuple", which is the same for all compilers. See https://learn.microsoft.com/en-us/cpp/standard-library/pair-structure https://learn.microsoft.com/en-us/cpp/standard-library/tuple-class PiperOrigin-RevId: 506340295 Change-Id: Ib4ce2f74d54888a4e4173f42da1b55cc5583f7d4
This commit is contained in:
parent
d9251171f5
commit
0a3b403fe0
@ -33,6 +33,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <tuple>
|
||||||
|
|
||||||
#include "gmock/gmock.h"
|
#include "gmock/gmock.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
@ -254,12 +255,16 @@ TEST_F(GMockOutputTest, CatchesLeakedMocks) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MATCHER_P2(IsPair, first, second, "") {
|
MATCHER_P2(IsPair, first, second, "") {
|
||||||
return Value(arg.first, first) && Value(arg.second, second);
|
return Value(std::get<0>(arg), first) && Value(std::get<1>(arg), second);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(GMockOutputTest, PrintsMatcher) {
|
TEST_F(GMockOutputTest, PrintsMatcher) {
|
||||||
const testing::Matcher<int> m1 = Ge(48);
|
const testing::Matcher<int> m1 = Ge(48);
|
||||||
EXPECT_THAT((std::pair<int, bool>(42, true)), IsPair(m1, true));
|
// Explicitly using std::tuple instead of std::pair due to differences between
|
||||||
|
// MSVC and other compilers. std::pair is printed as
|
||||||
|
// "struct std::pair<int,bool>" when using MSVC vs "std::pair<int,bool>" with
|
||||||
|
// other compilers.
|
||||||
|
EXPECT_THAT((std::tuple<int, bool>(42, true)), IsPair(m1, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestCatchesLeakedMocksInAdHocTests() {
|
void TestCatchesLeakedMocksInAdHocTests() {
|
||||||
|
@ -290,9 +290,9 @@ Stack trace:
|
|||||||
[ OK ] GMockOutputTest.CatchesLeakedMocks
|
[ OK ] GMockOutputTest.CatchesLeakedMocks
|
||||||
[ RUN ] GMockOutputTest.PrintsMatcher
|
[ RUN ] GMockOutputTest.PrintsMatcher
|
||||||
FILE:#: Failure
|
FILE:#: Failure
|
||||||
Value of: (std::pair<int, bool>(42, true))
|
Value of: (std::tuple<int, bool>(42, true))
|
||||||
Expected: is pair (first: is >= 48, second: true)
|
Expected: is pair (first: is >= 48, second: true)
|
||||||
Actual: (42, true) (of type std::pair<int, bool>)
|
Actual: (42, true)
|
||||||
[ FAILED ] GMockOutputTest.PrintsMatcher
|
[ FAILED ] GMockOutputTest.PrintsMatcher
|
||||||
[ FAILED ] GMockOutputTest.UnexpectedCall
|
[ FAILED ] GMockOutputTest.UnexpectedCall
|
||||||
[ FAILED ] GMockOutputTest.UnexpectedCallToVoidFunction
|
[ FAILED ] GMockOutputTest.UnexpectedCallToVoidFunction
|
||||||
|
Loading…
x
Reference in New Issue
Block a user