| // Copyright 2018 The Fuchsia 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 "src/lib/callback/capture.h" | |
| #include <lib/fit/function.h> | |
| #include <memory> | |
| #include <gtest/gtest.h> | |
| namespace callback { | |
| namespace { | |
| TEST(Capture, CaptureVariable) { | |
| int a1 = 0; | |
| std::string a2; | |
| std::unique_ptr<std::string> a3; | |
| bool called = false; | |
| Capture([&called] { called = true; }, &a1, &a2, &a3)(1, "hello", | |
| std::make_unique<std::string>("world")); | |
| EXPECT_TRUE(called); | |
| EXPECT_EQ(1, a1); | |
| EXPECT_EQ("hello", a2); | |
| EXPECT_TRUE(a3); | |
| EXPECT_EQ("world", *a3); | |
| } | |
| TEST(Capture, CaptureConstReference) { | |
| int a1 = 0; | |
| int a2 = 0; | |
| bool called = false; | |
| fit::function<void(int, const int&)> capture = Capture([&called] { called = true; }, &a1, &a2); | |
| capture(1, 2); | |
| EXPECT_TRUE(called); | |
| EXPECT_EQ(1, a1); | |
| EXPECT_EQ(2, a2); | |
| } | |
| TEST(Capture, UseStdIgnore) { | |
| int a1 = 0; | |
| bool called = false; | |
| Capture([&called] { called = true; }, &a1, &std::ignore)(1, 2); | |
| EXPECT_TRUE(called); | |
| EXPECT_EQ(1, a1); | |
| } | |
| } // namespace | |
| } // namespace callback |