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
4TestCase := Rectangle {
5 width: 120px;
6 height: 120px;
7
8 property <int> hello: a.hello;
9 property <int> binding_dep: a.binding_dep;
10 property <int> unset_property;
11 animate unset_property {
12 duration: 1200ms;
13 }
14
15 a := TouchArea {
16 property<int> hello: 40;
17 animate hello {
18 duration: 1200ms;
19 }
20 property<bool> condition: true;
21 property<int> binding_dep: condition ? 100 : 150;
22 animate binding_dep {
23 duration: 1200ms;
24 }
25 clicked => {
26 debug("CLICKED") ;
27 self.hello = 60;
28 self.condition = false;
29 unset_property = 100;
30 debug("DONE");
31 }
32 }
33}
34
35/*
36
37```rust
38let instance = TestCase::new().unwrap();
39assert_eq!(instance.get_hello(), 40);
40assert_eq!(instance.get_binding_dep(), 100);
41assert_eq!(instance.get_unset_property(), 0);
42slint_testing::send_mouse_click(&instance, 5., 5.);
43// no time has elapsed yet
44assert_eq!(instance.get_hello(), 40);
45assert_eq!(instance.get_binding_dep(), 100);
46assert_eq!(instance.get_unset_property(), 0);
47
48// Half the animation
49slint_testing::mock_elapsed_time(600);
50assert_eq!(instance.get_hello(), 50);
51assert_eq!(instance.get_binding_dep(), 125);
52assert_eq!(instance.get_unset_property(), 50);
53
54
55
56// Remaining half
57slint_testing::mock_elapsed_time(600);
58assert_eq!(instance.get_hello(), 60);
59assert_eq!(instance.get_binding_dep(), 150);
60assert_eq!(instance.get_unset_property(), 100);
61
62slint_testing::mock_elapsed_time(100);
63assert_eq!(instance.get_hello(), 60);
64assert_eq!(instance.get_binding_dep(), 150);
65
66
67```
68
69
70```cpp
71auto handle = TestCase::create();
72const TestCase &instance = *handle;
73assert_eq(instance.get_hello(), 40);
74assert_eq(instance.get_binding_dep(), 100);
75assert_eq(instance.get_unset_property(), 0);
76slint_testing::send_mouse_click(&instance, 5., 5.);
77// no time has elapsed yet
78assert_eq(instance.get_hello(), 40);
79assert_eq(instance.get_binding_dep(), 100);
80assert_eq(instance.get_unset_property(), 0);
81
82// Half the animation
83slint_testing::mock_elapsed_time(600);
84assert_eq(instance.get_hello(), 50);
85assert_eq(instance.get_binding_dep(), 125);
86assert_eq(instance.get_unset_property(), 50);
87
88
89// Remaining half
90slint_testing::mock_elapsed_time(600);
91assert_eq(instance.get_hello(), 60);
92assert_eq(instance.get_binding_dep(), 150);
93assert_eq(instance.get_unset_property(), 100);
94
95slint_testing::mock_elapsed_time(100);
96assert_eq(instance.get_hello(), 60);
97assert_eq(instance.get_binding_dep(), 150);
98assert_eq(instance.get_unset_property(), 100);
99```
100
101```js
102var instance = new slint.TestCase({});
103assert.equal(instance.hello, 40);
104assert.equal(instance.binding_dep, 100);
105assert.equal(instance.unset_property, 0);
106slintlib.private_api.send_mouse_click(instance, 5., 5.);
107// no time has elapsed yet
108assert.equal(instance.hello, 40);
109assert.equal(instance.binding_dep, 100);
110assert.equal(instance.unset_property, 0);
111
112// Half the animation
113slintlib.private_api.mock_elapsed_time(600);
114assert.equal(instance.hello, 50);
115assert.equal(instance.binding_dep, 125);
116assert.equal(instance.unset_property, 50);
117// Remaining half
118slintlib.private_api.mock_elapsed_time(600);
119assert.equal(instance.hello, 60);
120assert.equal(instance.binding_dep, 150);
121assert.equal(instance.unset_property, 100);
122slintlib.private_api.mock_elapsed_time(100);
123assert.equal(instance.hello, 60);
124assert.equal(instance.binding_dep, 150);
125assert.equal(instance.unset_property, 100);
126
127```
128*/
129