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:
Olivier Goffart 2022-05-07 17:17:34 +02:00 committed by Olivier Goffart
parent a2d5ddaeca
commit 2aaefa8e0d
3 changed files with 45 additions and 1 deletions

View 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);
}