blob: 5b0fab1074ac95eef4ec4db219826ae2fc631e8a [file] [log] [blame]
// 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.
#ifndef MOJO_APPLICATION_PUBLIC_CPP_APPLICATION_TEST_BASE_H_
#define MOJO_APPLICATION_PUBLIC_CPP_APPLICATION_TEST_BASE_H_
#include "mojo/application/public/cpp/application_delegate.h"
#include "mojo/application/public/interfaces/application.mojom.h"
#include "mojo/public/cpp/bindings/array.h"
#include "mojo/public/cpp/bindings/string.h"
#include "mojo/public/cpp/system/macros.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace mojo {
class ApplicationImpl;
namespace test {
// Run all application tests. This must be called after the environment is
// initialized, to support construction of a default run loop.
MojoResult RunAllTests(MojoHandle application_request_handle);
// A GTEST base class for application testing executed in mojo_shell.
class ApplicationTestBase : public testing::Test {
public:
ApplicationTestBase();
~ApplicationTestBase() override;
protected:
ApplicationImpl* application_impl() { return application_impl_; }
// Get the ApplicationDelegate for the application to be tested.
virtual ApplicationDelegate* GetApplicationDelegate();
// testing::Test:
void SetUp() override;
void TearDown() override;
// True by default, which indicates a MessageLoop will automatically be
// created for the application. Tests may override this function to prevent
// a default loop from being created.
virtual bool ShouldCreateDefaultRunLoop();
private:
// The application implementation instance, reconstructed for each test.
ApplicationImpl* application_impl_;
// The application delegate used if GetApplicationDelegate is not overridden.
ApplicationDelegate default_application_delegate_;
MOJO_DISALLOW_COPY_AND_ASSIGN(ApplicationTestBase);
};
} // namespace test
} // namespace mojo
#endif // MOJO_APPLICATION_PUBLIC_CPP_APPLICATION_TEST_BASE_H_