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
4component Button {
5 callback clicked();
6 accessible-role: button;
7 accessible-label: "Hello";
8 accessible-action-default => {
9 debug("DEFAULT");
10 clicked()
11 }
12 accessible-value: value;
13 in-out property <int> value;
14 accessible-action-set-value(x) => {
15 debug("SetValue", x);
16 value = x.to-float();
17 }
18}
19
20component TestCase {
21 Rectangle {
22 x: 100px;
23 y: 100px;
24
25 btn := Button {
26 x: 23px;
27 y: 43px;
28 width: 143px;
29 height: 76px;
30 }
31 }
32
33 public function call() {
34 btn.accessible-action-set-value(45);
35 }
36}
37
38/*
39```rust
40let instance = TestCase::new().unwrap();
41let mut button_search = slint_testing::ElementHandle::find_by_accessible_label(&instance, "Hello");
42let button = button_search.next().unwrap();
43assert!(button_search.next().is_none());
44
45assert_eq!(button.absolute_position(), slint::LogicalPosition::new(123., 143.));
46assert_eq!(button.size(), slint::LogicalSize::new(143., 76.));
47
48assert_eq!(button.accessible_value().unwrap(), "0");
49instance.invoke_call();
50assert_eq!(button.accessible_value().unwrap(), "45");
51button.set_accessible_value("78");
52assert_eq!(button.accessible_value().unwrap(), "78");
53```
54
55```cpp
56auto handle = TestCase::create();
57const TestCase &instance = *handle;
58
59auto button_search = slint::testing::ElementHandle::find_by_accessible_label(handle, "Hello");
60assert_eq(button_search.size(), 1);
61auto button = button_search[0];
62
63assert(button.absolute_position() == slint::LogicalPosition({123., 143.}));
64assert(button.size() == slint::LogicalSize({143., 76.}));
65
66assert_eq(button.accessible_value().value(), "0");
67instance.invoke_call();
68assert_eq(button.accessible_value().value(), "45");
69button.set_accessible_value("78");
70assert_eq(button.accessible_value().value(), "78");
71```
72*/
73