1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef ATHENA_TEST_ATHENA_TEST_BASE_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define ATHENA_TEST_ATHENA_TEST_BASE_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "athena/test/athena_test_helper.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/macros.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/message_loop/message_loop.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace aura {
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Window;
1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WindowDelegate;
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace athena {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace test {
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// A base class for athena unit tests.
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AthenaTestBase : public testing::Test {
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  AthenaTestBase();
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual ~AthenaTestBase();
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // testing::Test:
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void SetUp() OVERRIDE;
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void TearDown() OVERRIDE;
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) protected:
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void RunAllPendingInMessageLoop();
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  scoped_ptr<aura::Window> CreateTestWindow(aura::WindowDelegate* delegate,
3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                            const gfx::Rect& bounds);
3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  aura::Window* root_window() { return helper_->GetRootWindow(); }
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  aura::WindowTreeHost* host() { return helper_->GetHost(); }
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool setup_called_;
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool teardown_called_;
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  base::MessageLoopForUI message_loop_;
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<AthenaTestHelper> helper_;
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(AthenaTestBase);
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace test
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace athena
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // ATHENA_TEST_ATHENA_TEST_BASE_H_
54