| // Copyright 2025 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/authentication/ui_bundled/continuation.h" |
| |
| #import "base/run_loop.h" |
| #import "base/test/task_environment.h" |
| #import "ios/chrome/browser/authentication/ui_bundled/change_profile_continuation_provider.h" |
| #import "testing/platform_test.h" |
| |
| class ContinuationTest : public PlatformTest { |
| protected: |
| base::test::TaskEnvironment task_environment_; |
| }; |
| |
| TEST_F(ContinuationTest, DoNothingContinuation) { |
| ChangeProfileContinuation continuation = DoNothingContinuation(); |
| |
| base::RunLoop run_loop; |
| bool closure_called = false; |
| base::OnceClosure closure = base::BindOnce( |
| [](bool* closure_called) { *closure_called = true; }, &closure_called); |
| SceneState* scene_state = nil; |
| std::move(continuation) |
| .Run(scene_state, std::move(closure).Then(run_loop.QuitClosure())); |
| run_loop.Run(); |
| |
| EXPECT_TRUE(closure_called); |
| } |
| |
| TEST_F(ContinuationTest, DoNothingContinuationProvider) { |
| ChangeProfileContinuationProvider provider = DoNothingContinuationProvider(); |
| ChangeProfileContinuation continuation = provider.Run(); |
| |
| base::RunLoop run_loop; |
| bool closure_called = false; |
| base::OnceClosure closure = base::BindOnce( |
| [](bool* closure_called) { *closure_called = true; }, &closure_called); |
| SceneState* scene_state = nil; |
| std::move(continuation) |
| .Run(scene_state, std::move(closure).Then(run_loop.QuitClosure())); |
| run_loop.Run(); |
| |
| EXPECT_TRUE(closure_called); |
| } |