Adding support to gmock_gen for nested templates.
This commit is contained in:
		@@ -496,9 +496,10 @@ class TypeConverter(object):
 | 
			
		||||
                else:
 | 
			
		||||
                    names.append(t.name)
 | 
			
		||||
            name = ''.join(names)
 | 
			
		||||
            result.append(Type(name_tokens[0].start, name_tokens[-1].end,
 | 
			
		||||
                               name, templated_types, modifiers,
 | 
			
		||||
                               reference, pointer, array))
 | 
			
		||||
            if name_tokens:
 | 
			
		||||
                result.append(Type(name_tokens[0].start, name_tokens[-1].end,
 | 
			
		||||
                                   name, templated_types, modifiers,
 | 
			
		||||
                                   reference, pointer, array))
 | 
			
		||||
            del name_tokens[:]
 | 
			
		||||
 | 
			
		||||
        i = 0
 | 
			
		||||
 
 | 
			
		||||
@@ -407,6 +407,42 @@ void());
 | 
			
		||||
    self.assertEqualIgnoreLeadingWhitespace(
 | 
			
		||||
        expected, self.GenerateMocks(source))
 | 
			
		||||
 | 
			
		||||
  def testTemplateInATemplateTypedef(self):
 | 
			
		||||
    source = """
 | 
			
		||||
class Test {
 | 
			
		||||
 public:
 | 
			
		||||
  typedef std::vector<std::list<int>> FooType;
 | 
			
		||||
  virtual void Bar(const FooType& test_arg);
 | 
			
		||||
};
 | 
			
		||||
"""
 | 
			
		||||
    expected = """\
 | 
			
		||||
class MockTest : public Test {
 | 
			
		||||
public:
 | 
			
		||||
MOCK_METHOD1(Bar,
 | 
			
		||||
void(const FooType& test_arg));
 | 
			
		||||
};
 | 
			
		||||
"""
 | 
			
		||||
    self.assertEqualIgnoreLeadingWhitespace(
 | 
			
		||||
        expected, self.GenerateMocks(source))
 | 
			
		||||
 | 
			
		||||
  def testTemplateInATemplateTypedefWithComma(self):
 | 
			
		||||
    source = """
 | 
			
		||||
class Test {
 | 
			
		||||
 public:
 | 
			
		||||
  typedef std::function<void(
 | 
			
		||||
      const vector<std::list<int>>&, int> FooType;
 | 
			
		||||
  virtual void Bar(const FooType& test_arg);
 | 
			
		||||
};
 | 
			
		||||
"""
 | 
			
		||||
    expected = """\
 | 
			
		||||
class MockTest : public Test {
 | 
			
		||||
public:
 | 
			
		||||
MOCK_METHOD1(Bar,
 | 
			
		||||
void(const FooType& test_arg));
 | 
			
		||||
};
 | 
			
		||||
"""
 | 
			
		||||
    self.assertEqualIgnoreLeadingWhitespace(
 | 
			
		||||
        expected, self.GenerateMocks(source))
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
  unittest.main()
 | 
			
		||||
 
 | 
			
		||||
@@ -173,7 +173,7 @@ def GetTokens(source):
 | 
			
		||||
            token_type = SYNTAX
 | 
			
		||||
            i += 1
 | 
			
		||||
            new_ch = source[i]
 | 
			
		||||
            if new_ch == c:
 | 
			
		||||
            if new_ch == c and c != '>':         # Treat ">>" as two tokens.
 | 
			
		||||
                i += 1
 | 
			
		||||
            elif c == '-' and new_ch == '>':
 | 
			
		||||
                i += 1
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user