1// Copyright © SixtyFPS GmbH <info@slint.dev>
2// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
3
4// Test for 3953
5
6export component TestCase inherits Window {
7 width: 100phx;
8 height: 100phx;
9
10 in property<int> value: 42;
11 in-out property <string> r;
12
13 if value > 0 : TouchArea {
14 property <int> cL;
15 width: 50%;
16 x: 0px;
17 clicked => {
18 cL += 1;
19 r += "clickL(" + cL + ").";
20 }
21 init => {
22 r += "initL(" + cL + ").";
23 }
24
25 }
26
27 if value.mod(2) == 0 : TouchArea {
28 property <int> cR;
29 width: 50%;
30 x: parent.width - self.width;
31 clicked => {
32 cR += 1;
33 r += "clickR(" + cR + ").";
34 }
35 init => {
36 r += "initR(" + cR + ").";
37 }
38 }
39
40}
41
42
43
44
45/*
46```cpp
47auto handle = TestCase::create();
48const TestCase &instance = *handle;
49
50// condition is false
51slint_testing::send_mouse_click(&instance, 5., 5.);
52assert_eq(instance.get_r(), "initR(0).initL(0).clickL(1).");
53slint_testing::send_mouse_click(&instance, 95., 5.);
54assert_eq(instance.get_r(), "initR(0).initL(0).clickL(1).clickR(1).");
55instance.set_r("");
56
57instance.set_value(-42);
58assert_eq(instance.get_r(), "");
59slint_testing::send_mouse_click(&instance, 5., 5.);
60assert_eq(instance.get_r(), "");
61slint_testing::send_mouse_click(&instance, 95., 5.);
62assert_eq(instance.get_r(), "clickR(2).");
63instance.set_r("");
64
65instance.set_value(48);
66assert_eq(instance.get_r(), "");
67slint_testing::send_mouse_click(&instance, 5., 5.);
68assert_eq(instance.get_r(), "initL(0).clickL(1).");
69slint_testing::send_mouse_click(&instance, 95., 5.);
70assert_eq(instance.get_r(), "initL(0).clickL(1).clickR(3).");
71instance.set_r("");
72
73instance.set_value(49);
74assert_eq(instance.get_r(), "");
75slint_testing::send_mouse_click(&instance, 5., 5.);
76assert_eq(instance.get_r(), "clickL(2).");
77slint_testing::send_mouse_click(&instance, 95., 5.);
78assert_eq(instance.get_r(), "clickL(2).");
79```
80
81
82```rust
83let instance = TestCase::new().unwrap();
84
85slint_testing::send_mouse_click(&instance, 5., 5.);
86assert_eq!(instance.get_r(), "initR(0).initL(0).clickL(1).");
87slint_testing::send_mouse_click(&instance, 95., 5.);
88assert_eq!(instance.get_r(), "initR(0).initL(0).clickL(1).clickR(1).");
89instance.set_r("".into());
90
91instance.set_value(-42);
92assert_eq!(instance.get_r(), "");
93slint_testing::send_mouse_click(&instance, 5., 5.);
94assert_eq!(instance.get_r(), "");
95slint_testing::send_mouse_click(&instance, 95., 5.);
96assert_eq!(instance.get_r(), "clickR(2).");
97instance.set_r("".into());
98
99instance.set_value(48);
100assert_eq!(instance.get_r(), "");
101slint_testing::send_mouse_click(&instance, 5., 5.);
102assert_eq!(instance.get_r(), "initL(0).clickL(1).");
103slint_testing::send_mouse_click(&instance, 95., 5.);
104assert_eq!(instance.get_r(), "initL(0).clickL(1).clickR(3).");
105instance.set_r("".into());
106
107instance.set_value(49);
108assert_eq!(instance.get_r(), "");
109slint_testing::send_mouse_click(&instance, 5., 5.);
110assert_eq!(instance.get_r(), "clickL(2).");
111slint_testing::send_mouse_click(&instance, 95., 5.);
112assert_eq!(instance.get_r(), "clickL(2).");
113```
114
115```js
116var instance = new slint.TestCase();
117slintlib.private_api.send_mouse_click(instance, 5., 5.);
118assert.equal(instance.r, "initR(0).initL(0).clickL(1).");
119slintlib.private_api.send_mouse_click(instance, 95., 5.);
120assert.equal(instance.r, "initR(0).initL(0).clickL(1).clickR(1).");
121instance.r = "";
122
123instance.value = -42;
124assert.equal(instance.r, "");
125slintlib.private_api.send_mouse_click(instance, 5., 5.);
126assert.equal(instance.r, "");
127slintlib.private_api.send_mouse_click(instance, 95., 5.);
128assert.equal(instance.r, "clickR(2).");
129instance.r = "";
130
131instance.value = 48;
132assert.equal(instance.r, "");
133slintlib.private_api.send_mouse_click(instance, 5., 5.);
134assert.equal(instance.r, "initL(0).clickL(1).");
135slintlib.private_api.send_mouse_click(instance, 95., 5.);
136assert.equal(instance.r, "initL(0).clickL(1).clickR(3).");
137instance.r = "";
138
139instance.value = 49;
140assert.equal(instance.r, "");
141slintlib.private_api.send_mouse_click(instance, 5., 5.);
142assert.equal(instance.r, "clickL(2).");
143slintlib.private_api.send_mouse_click(instance, 95., 5.);
144assert.equal(instance.r, "clickL(2).");
145```
146*/
147