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// Verify that the init callback is invoked in the correct order
5
6
7import { ListView } from "std-widgets.slint";
8export component TestCase inherits Window {
9 width: 300px;
10 height: 300px;
11 in-out property <string> result;
12 lv := ListView {
13 for idx in 30 : Rectangle {
14 height: 100px;
15 init => { result += "(" + idx + ")"; }
16 }
17 }
18 in-out property scroll <=> lv.viewport-y;
19}
20
21/*
22```rust
23let instance = TestCase::new().unwrap();
24
25slint_testing::send_mouse_click(&instance, 5., 5.);
26assert_eq!(instance.get_result(), "(0)(1)(2)");
27instance.set_result("".into());
28instance.set_scroll(-150.);
29slint_testing::send_mouse_click(&instance, 5., 5.);
30assert_eq!(instance.get_result(), "(3)(4)");
31instance.set_result("".into());
32instance.set_scroll(-1000.);
33slint_testing::send_mouse_click(&instance, 5., 5.);
34assert_eq!(instance.get_result(), "(10)(11)(12)");
35instance.set_result("".into());
36instance.set_scroll(-850.);
37slint_testing::send_mouse_click(&instance, 5., 5.);
38assert_eq!(instance.get_result(), "(8)(9)");
39
40
41```
42
43```cpp
44auto handle = TestCase::create();
45const TestCase &instance = *handle;
46
47slint_testing::send_mouse_click(&instance, 5., 5.);
48
49// FIXME: In C++ ensure_updated_listview doesn't do the smart way to only instentiate visible items
50assert_eq(instance.get_result(), "(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)(29)");
51if(false) {
52
53assert_eq(instance.get_result(), "(0)(1)(2)");
54instance.set_result("");
55instance.set_scroll(-150.);
56slint_testing::send_mouse_click(&instance, 5., 5.);
57assert_eq(instance.get_result(), "(3)(4)");
58instance.set_result("");
59instance.set_scroll(-1000.);
60slint_testing::send_mouse_click(&instance, 5., 5.);
61assert_eq(instance.get_result(), "(10)(11)(12)");
62instance.set_result("");
63instance.set_scroll(-850.);
64slint_testing::send_mouse_click(&instance, 5., 5.);
65assert_eq(instance.get_result(), "(8)(9)");
66
67}
68```
69
70
71```js
72var instance = new slint.TestCase({});
73
74slintlib.private_api.send_mouse_click(instance, 5., 5.);
75assert.equal(instance.result, "(0)(1)(2)");
76instance.result = "";
77instance.scroll = -150.;
78slintlib.private_api.send_mouse_click(instance, 5., 5.);
79assert.equal(instance.result, "(3)(4)");
80instance.result = "";
81instance.scroll = -1000.;
82slintlib.private_api.send_mouse_click(instance, 5., 5.);
83assert.equal(instance.result, "(10)(11)(12)");
84instance.result = "";
85instance.scroll = -850.;
86slintlib.private_api.send_mouse_click(instance, 5., 5.);
87assert.equal(instance.result, "(8)(9)");
88```
89
90
91*/
92