mirror of
https://github.com/slint-ui/slint.git
synced 2025-08-04 02:39:28 +00:00
C++: Setting a value to a property having a binding should always clear the binding
... even if the old value holds the same value as the new value This fixes test_cpp_bindings_two_way_priority_default Also add a C++ unit test that tests the Property type specificaly
This commit is contained in:
parent
a2d5ddaeca
commit
2aaefa8e0d
3 changed files with 45 additions and 1 deletions
43
api/cpp/tests/properties.cpp
Normal file
43
api/cpp/tests/properties.cpp
Normal file
|
@ -0,0 +1,43 @@
|
|||
// Copyright © SixtyFPS GmbH <info@slint-ui.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial
|
||||
|
||||
#include <chrono>
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include "catch2/catch.hpp"
|
||||
|
||||
#include <slint.h>
|
||||
#include <slint_image.h>
|
||||
|
||||
using slint::private_api::Property;
|
||||
|
||||
SCENARIO("Basic usage")
|
||||
{
|
||||
Property<int> prop;
|
||||
REQUIRE(prop.get() == 0);
|
||||
|
||||
prop.set(42);
|
||||
REQUIRE(prop.get() == 42);
|
||||
|
||||
{
|
||||
Property<int> prop2;
|
||||
prop2.set_binding([&] { return prop.get() + 4; });
|
||||
REQUIRE(prop2.get() == 42 + 4);
|
||||
prop.set(55);
|
||||
REQUIRE(prop2.get() == 55 + 4);
|
||||
|
||||
}
|
||||
|
||||
REQUIRE(prop.get() == 55);
|
||||
prop.set(33);
|
||||
REQUIRE(prop.get() == 33);
|
||||
}
|
||||
|
||||
|
||||
SCENARIO("Set after binding")
|
||||
{
|
||||
Property<int> prop;
|
||||
REQUIRE(prop.get() == 0);
|
||||
prop.set_binding([] { return 55; });
|
||||
prop.set(0);
|
||||
REQUIRE(prop.get() == 0);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue