Home | History | Annotate | Download | only in tests
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef VIRTUAL_METHODS_H_
      6 #define VIRTUAL_METHODS_H_
      7 
      8 // Should warn about virtual method usage.
      9 class VirtualMethodsInHeaders {
     10  public:
     11   // Don't complain about these.
     12   virtual void MethodIsAbstract() = 0;
     13   virtual void MethodHasNoArguments();
     14   virtual void MethodHasEmptyDefaultImpl() {}
     15 
     16   // But complain about this:
     17   virtual bool ComplainAboutThis() { return true; }
     18 };
     19 
     20 // Complain on missing 'virtual' keyword in overrides.
     21 class WarnOnMissingVirtual : public VirtualMethodsInHeaders {
     22  public:
     23   void MethodHasNoArguments() override;
     24 };
     25 
     26 // Don't complain about things in a 'testing' namespace.
     27 namespace testing {
     28 struct TestStruct {};
     29 }  // namespace testing
     30 
     31 class VirtualMethodsInHeadersTesting : public VirtualMethodsInHeaders {
     32  public:
     33   // Don't complain about no virtual testing methods.
     34   void MethodHasNoArguments();
     35  private:
     36   testing::TestStruct tester_;
     37 };
     38 
     39 #endif  // VIRTUAL_METHODS_H_
     40