// Copyright 2013 The Flutter 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 "flutter/fml/synchronization/sync_switch.h" #include "gtest/gtest.h" using fml::SyncSwitch; TEST(SyncSwitchTest, Basic) { SyncSwitch syncSwitch; bool switchValue = false; syncSwitch.Execute(SyncSwitch::Handlers() .SetIfTrue([&] { switchValue = true; }) .SetIfFalse([&] { switchValue = false; })); EXPECT_FALSE(switchValue); syncSwitch.SetSwitch(true); syncSwitch.Execute(SyncSwitch::Handlers() .SetIfTrue([&] { switchValue = true; }) .SetIfFalse([&] { switchValue = false; })); EXPECT_TRUE(switchValue); } TEST(SyncSwitchTest, NoopIfUndefined) { SyncSwitch syncSwitch; bool switchValue = false; syncSwitch.Execute(SyncSwitch::Handlers()); EXPECT_FALSE(switchValue); }