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

Unified Diff: athena/env/athena_env_unittest.cc

Issue 544953003: Supprot V2 app: step1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 3 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 | « athena/env/athena_env_impl.cc ('k') | athena/env/public/athena_env.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: athena/env/athena_env_unittest.cc
diff --git a/athena/env/athena_env_unittest.cc b/athena/env/athena_env_unittest.cc
index 1c092a2cd1f22f17d2863a687af37be193d299f4..e852f45fcee972632ffb77b1aef4ee028e2d95b9 100644
--- a/athena/env/athena_env_unittest.cc
+++ b/athena/env/athena_env_unittest.cc
@@ -11,6 +11,96 @@
namespace athena {
+typedef test::AthenaTestBase AthenaEnvTest;
+
+namespace {
+
+class TerminatingCallback {
+ public:
+ TerminatingCallback()
+ : on_terminating_count_(0),
+ on_terminating_2_count_(0) {
+ }
+
+ void OnTerminating() {
+ on_terminating_count_ ++;
+ }
+
+ void OnTerminating2() {
+ on_terminating_2_count_ ++;
+ }
+
+ int on_terminating_count() const { return on_terminating_count_; }
+ int on_terminating_2_count() const { return on_terminating_2_count_; }
+
+ void Reset() {
+ on_terminating_count_ = 0;
+ on_terminating_2_count_ = 0;
+ }
+
+ private:
+ int on_terminating_count_;
+ int on_terminating_2_count_;
+
+ DISALLOW_COPY_AND_ASSIGN(TerminatingCallback);
+};
+
+} // namespace
+
+TEST_F(AthenaEnvTest, TerminatingCallback) {
+ TerminatingCallback callback_1;
+ TerminatingCallback callback_2;
+ AthenaEnv* env = AthenaEnv::Get();
+ base::Closure cb_1_1 =
+ base::Bind(&TerminatingCallback::OnTerminating,
+ base::Unretained(&callback_1));
+ base::Closure cb_1_2 =
+ base::Bind(&TerminatingCallback::OnTerminating2,
+ base::Unretained(&callback_1));
+ base::Closure cb_2_1 =
+ base::Bind(&TerminatingCallback::OnTerminating,
+ base::Unretained(&callback_2));
+
+ env->AddTerminatingCallback(cb_1_1);
+ env->AddTerminatingCallback(cb_1_2);
+ env->AddTerminatingCallback(cb_2_1);
+ env->OnTerminating();
+
+ EXPECT_EQ(1, callback_1.on_terminating_count());
+ EXPECT_EQ(1, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ // Remove callbacks.
+ callback_1.Reset();
+ callback_2.Reset();
+ env->RemoveTerminatingCallback(cb_1_2);
+ env->OnTerminating();
+ EXPECT_EQ(1, callback_1.on_terminating_count());
+ EXPECT_EQ(0, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ callback_1.Reset();
+ callback_2.Reset();
+ env->RemoveTerminatingCallback(cb_1_1);
+ env->OnTerminating();
+ EXPECT_EQ(0, callback_1.on_terminating_count());
+ EXPECT_EQ(0, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ // Add removed callback.
+ callback_1.Reset();
+ callback_2.Reset();
+ env->AddTerminatingCallback(cb_1_2);
+ env->OnTerminating();
+ EXPECT_EQ(0, callback_1.on_terminating_count());
+ EXPECT_EQ(1, callback_1.on_terminating_2_count());
+ EXPECT_EQ(1, callback_2.on_terminating_count());
+
+ // Adding empty callback should not fail.
+ env->AddTerminatingCallback(base::Closure());
+ env->OnTerminating();
+}
+
namespace {
class AthenaShutdownTest : public test::AthenaTestBase {
« no previous file with comments | « athena/env/athena_env_impl.cc ('k') | athena/env/public/athena_env.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698