// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/bind.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/test/test_suite.h"
#include "ui/gl/gl_surface.h"

#if defined(USE_X11)
#include "ui/gfx/x/x11_connection.h"
#endif

namespace mojo {

class WindowManagerTestSuite : public base::TestSuite {
 public:
  WindowManagerTestSuite(int argc, char** argv) : TestSuite(argc, argv) {}
  ~WindowManagerTestSuite() override {}

 protected:
  void Initialize() override {
#if defined(USE_X11)
    // Each test ends up creating a new thread for the native viewport service.
    // In other words we'll use X on different threads, so tell it that.
    gfx::InitializeThreadedX11();
#endif
    base::TestSuite::Initialize();
    gfx::GLSurface::InitializeOneOffForTests();
  }

 private:
  DISALLOW_COPY_AND_ASSIGN(WindowManagerTestSuite);
};

}  // namespace mojo

int main(int argc, char** argv) {
  mojo::WindowManagerTestSuite test_suite(argc, argv);

  return base::LaunchUnitTests(
      argc, argv, base::Bind(&TestSuite::Run, base::Unretained(&test_suite)));
}
