Googletest export

Use an OrderedDict to store templated_types in the AST so that gmock knows how to properly construct the templated Mock class.

This is necessary for functions that make use of the templated typename as an argument or return type.

PiperOrigin-RevId: 349405731
This commit is contained in:
Abseil Team
2020-12-29 07:26:08 -05:00
committed by Derek Mauro
parent d72813110c
commit 95a9bdd9f9
3 changed files with 27 additions and 7 deletions

View File

@@ -428,8 +428,8 @@ class Test {
};
"""
expected = """\
template <typename T0, typename T1>
class MockTest : public Test<T0, T1> {
template <typename S, typename T>
class MockTest : public Test<S, T> {
public:
MOCK_METHOD(void, Foo, (), (override));
};
@@ -450,6 +450,24 @@ class MockTest : public Test {
public:
MOCK_METHOD(void, Bar, (const FooType& test_arg), (override));
};
"""
self.assertEqualIgnoreLeadingWhitespace(expected,
self.GenerateMocks(source))
def testTemplatedClassWithTemplatedArguments(self):
source = """
template <typename S, typename T, typename U, typename V, typename W>
class Test {
public:
virtual U Foo(T some_arg);
};
"""
expected = """\
template <typename S, typename T, typename U, typename V, typename W>
class MockTest : public Test<S, T, U, V, W> {
public:
MOCK_METHOD(U, Foo, (T some_arg), (override));
};
"""
self.assertEqualIgnoreLeadingWhitespace(expected,
self.GenerateMocks(source))