Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1214)

Unified Diff: mojo/examples/apptest/example_apptest.cc

Issue 399653004: Add a Mojo example apptest that runs in mojo_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use mojo_ignore_result for RUN_ALL_TESTS(). Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | mojo/examples/apptest/example_client_application.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/examples/apptest/example_apptest.cc
diff --git a/mojo/examples/apptest/example_apptest.cc b/mojo/examples/apptest/example_apptest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9f0397a005f43ce777158cf0505be2e3c9099850
--- /dev/null
+++ b/mojo/examples/apptest/example_apptest.cc
@@ -0,0 +1,92 @@
+// 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 "mojo/examples/apptest/example_client_impl.h"
+#include "mojo/examples/apptest/example_service.mojom.h"
+#include "mojo/public/cpp/application/application_delegate.h"
+#include "mojo/public/cpp/application/application_impl.h"
+#include "mojo/public/cpp/bindings/callback.h"
+#include "mojo/public/cpp/environment/environment.h"
+#include "mojo/public/cpp/system/macros.h"
+#include "mojo/public/cpp/utility/run_loop.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+// TODO(msw): Remove this once we can get ApplicationImpl from TLS.
+mojo::ApplicationImpl* g_application_impl_hack = NULL;
+
+} // namespace
+
+namespace mojo {
+
+namespace {
+
+class ExampleServiceTest : public testing::Test {
+ public:
+ ExampleServiceTest() {
+ g_application_impl_hack->ConnectToService("mojo:mojo_example_service",
+ &example_service_);
+ example_service_.set_client(&example_client_);
+ }
+
+ virtual ~ExampleServiceTest() MOJO_OVERRIDE {}
+
+ protected:
+ ExampleServicePtr example_service_;
+ ExampleClientImpl example_client_;
+
+ private:
+ MOJO_DISALLOW_COPY_AND_ASSIGN(ExampleServiceTest);
+};
+
+TEST_F(ExampleServiceTest, Ping) {
+ EXPECT_EQ(0, example_client_.last_pong_value());
+ example_service_->Ping(1);
+ mojo::RunLoop::current()->Run();
+ EXPECT_EQ(1, example_client_.last_pong_value());
+}
+
+template <typename T>
+struct SetAndQuit : public Callback<void()>::Runnable {
+ SetAndQuit(T* val, T result) : val_(val), result_(result) {}
+ virtual ~SetAndQuit() {}
+ virtual void Run() const MOJO_OVERRIDE{
+ *val_ = result_;
+ mojo::RunLoop::current()->Quit();
+ }
+ T* val_;
+ T result_;
+};
+
+TEST_F(ExampleServiceTest, RunCallback) {
+ bool was_run = false;
+ example_service_->RunCallback(SetAndQuit<bool>(&was_run, true));
+ mojo::RunLoop::current()->Run();
+ EXPECT_TRUE(was_run);
+}
+
+} // namespace
+
+} // namespace mojo
+
+extern "C" APPLICATION_EXPORT MojoResult CDECL MojoMain(
+ MojoHandle shell_handle) {
+ mojo::Environment env;
+ mojo::RunLoop loop;
+
+ mojo::ApplicationDelegate* delegate = mojo::ApplicationDelegate::Create();
+ mojo::ApplicationImpl app(delegate);
+ app.BindShell(shell_handle);
+ g_application_impl_hack = &app;
+
+ // TODO(msw): Get actual commandline arguments.
+ int argc = 0;
+ char** argv = NULL;
+ testing::InitGoogleTest(&argc, argv);
+ mojo_ignore_result(RUN_ALL_TESTS());
+
+ delete delegate;
+ return MOJO_RESULT_OK;
+}
« no previous file with comments | « no previous file | mojo/examples/apptest/example_client_application.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698