1// Copyright (c) 2014 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#include "base/logging.h"
6#include "base/memory/ref_counted.h"
7
8struct Foo : public base::RefCounted<Foo> {
9  int dummy;
10};
11
12// Rewriting the logging macros is a bit tricky. The CHECK_OP macros actually
13// wrap a function where the actual comparison happens. Make sure that the tool
14// is correctly matching the AST nodes generated by the macros and generating
15// the appropriate replacements.
16void TestFunction() {
17  scoped_refptr<Foo> a;
18  Foo* b;
19
20  CHECK_EQ(a.get(), b);
21  CHECK_EQ(b, a.get());
22
23  CHECK_NE(a.get(), b);
24  CHECK_NE(b, a.get());
25
26  CHECK(a.get());
27  CHECK(!a.get());
28}
29