11// Copyright © SixtyFPS GmbH <info@slint.dev>
22// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
33
4+ // See FIXME in the js test
5+ //ignore: live-preview
6+
47export global G1 {
58 in-out property <int > data : 42 ;
9+ in-out property <string > string-prop ;
610}
711
812export global G2 {
913 in-out property <int > data <=> G1. data;
1014}
1115
12- export component TestCase inherits Window {
16+ component SubComponent {
17+ in-out property <string > str <=> G1.s tring-prop;
18+ }
1319
20+ export component TestCase inherits Window {
1421 out property <int > d1 : G1. data;
1522 out property <int > d2 : G2. data;
16- out property <bool > test : G2. data == 42 ;
23+ sc1 := SubComponent {
24+ str : "sc1" ;
25+ }
26+ sc2 := SubComponent {
27+ str : "sc2" ;
28+ }
29+
30+ in-out property <string > string-prop-alias <=> sc1.s tr;
31+ out property <int > string-prop-alias-changed : 0 ;
32+ changed string-prop-alias => { string-prop-alias-changed+=1 ; }
33+
34+ out property <bool > test : G2. data == 42 && sc1.s tr == sc2.s tr;
1735}
1836
1937
@@ -37,6 +55,13 @@ assert_eq!(G2::get(&instance).get_data(), -1);
3755assert_eq!(instance.get_d1(), -1);
3856assert_eq!(instance.get_d2(), -1);
3957
58+ let string_prop = instance.global::<G1<'_>>().get_string_prop();
59+ assert!(string_prop == "sc1" || string_prop == "sc2");
60+ instance.set_string_prop_alias("xxx".into());
61+ let string_prop = instance.global::<G1<'_>>().get_string_prop();
62+ assert_eq!(string_prop, "xxx");
63+ slint_testing::mock_elapsed_time(1);
64+ assert_eq!(instance.get_string_prop_alias_changed(), 1);
4065```
4166
4267```cpp
@@ -57,6 +82,14 @@ assert_eq(instance.global<G1>().get_data(), -1);
5782assert_eq(instance.global<G2>().get_data(), -1);
5883assert_eq(instance.get_d1(), -1);
5984assert_eq(instance.get_d2(), -1);
85+
86+ auto string_prop = instance.global<G1>().get_string_prop();
87+ assert(string_prop == "sc1" || string_prop == "sc2");
88+ instance.set_string_prop_alias("xxx");
89+ string_prop = instance.global<G1>().get_string_prop();
90+ assert_eq(string_prop, "xxx");
91+ slint_testing::mock_elapsed_time(1);
92+ assert_eq(instance.get_string_prop_alias_changed(), 1);
6093```
6194
6295```js
@@ -76,6 +109,17 @@ assert.equal(instance.G1.data, -1);
76109assert.equal(instance.G2.data, -1);
77110assert.equal(instance.d1, -1);
78111assert.equal(instance.d2, -1);
112+
113+ // FIXME! This is not working with the interpreter
114+ /*
115+ let string_prop = instance.G1.string_prop;
116+ assert(string_prop == "sc1" || string_prop == "sc2");
117+ instance.G1.string_prop = "xxx";
118+ string_prop = instance.G1.string_prop;
119+ assert.equal(string_prop, "xxx");
120+ slintlib.private_api.mock_elapsed_time(1);
121+ assert.equal(instance.string_prop_alias_changed, 1);
122+ */
79123```
80124
81125*/
0 commit comments