1
2// Copyright © SixtyFPS GmbH <info@slint.dev>
3// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
4
5import { AboutSlint, Button } from "std-widgets.slint";
6export component TestCase inherits Window {
7
8 in-out property <string> app_title: "Application";
9
10 in-out property <string> result;
11
12 MenuBar {
13 Menu {
14 title: "File";
15 MenuItem {
16 title: "New";
17 activated => { result += self.title; debug("New"); }
18 }
19 MenuItem {
20 title: "Open";
21 activated => { debug("Open"); }
22 }
23 Menu {
24 title: "Open Recent";
25 for num in 45 : MenuItem {
26 title: "Recent " + num;
27 activated => {
28 if self.title != "Recent " + num {
29 result += "Error: invalid self.title";
30 }
31 result += self.title;
32 debug("Recent", num);
33 }
34 }
35 }
36 MenuItem {
37 title: "Save";
38 activated => { debug("Save"); }
39 }
40 MenuSeparator {}
41 if true: MenuItem {
42 title: "Exit " + app_title;
43 activated => {
44 app_title = "Exited";
45 }
46 }
47 MenuSeparator {}
48 MenuSeparator {}
49 }
50 Menu {
51 title: "Edit";
52 MenuItem {
53 title: "Copy";
54 activated => { debug("Copy"); }
55 }
56 MenuSeparator {}
57 if true: MenuItem {
58 title: "Paste";
59 activated => { debug("Paste"); }
60 }
61 MenuSeparator {}
62 MenuItem {
63 title: "Disabled";
64 enabled: false;
65 activated => { result += self.title; }
66 }
67 }
68 }
69 vl := VerticalLayout {
70 AboutSlint {}
71 Button { text: "Hello"; }
72 }
73
74 out property <bool> check-geometry: vl.x == 0 && vl.y == 0 && vl.width == root.width && vl.height == root.height;
75
76 out property <bool> test: check-geometry;
77}
78
79/*
80```rust
81use slint::{SharedString, platform::{Key}};
82let instance = TestCase::new().unwrap();
83assert!(instance.get_test());
84// click on the file menu
85slint_testing::send_mouse_click(&instance, 10., 10.);
86// navigate using the keys to the "Open Recent" menu item
87slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
88slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
89slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
90slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::RightArrow));
91slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::UpArrow));
92slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::UpArrow));
93assert_eq!(instance.get_result(), "");
94slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from("\n"));
95assert_eq!(instance.get_result(), "Recent 43");
96
97instance.set_result("".into());
98slint_testing::send_mouse_click(&instance, 10., 10.);
99slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
100slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from("\n"));
101assert_eq!(instance.get_result(), "New");
102
103// ensure that disabled items can't activate
104instance.set_result("".into());
105slint_testing::send_mouse_click(&instance, 100., 10.);
106slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
107slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
108slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from(Key::DownArrow));
109slint_testing::send_keyboard_string_sequence(&instance, &SharedString::from("\n"));
110assert_eq!(instance.get_result(), "");
111
112```
113
114```cpp
115auto handle = TestCase::create();
116const TestCase &instance = *handle;
117assert(instance.get_test());
118// click on the file menu
119slint_testing::send_mouse_click(&instance, 10., 10.);
120// navigate using the keys to the "Open Recent" menu item
121slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
122slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
123slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
124slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::RightArrow);
125slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::UpArrow);
126slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::UpArrow);
127assert_eq(instance.get_result(), "");
128slint_testing::send_keyboard_string_sequence(&instance, "\n");
129assert_eq(instance.get_result(), "Recent 43");
130
131instance.set_result("");
132slint_testing::send_mouse_click(&instance, 10., 10.);
133slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
134slint_testing::send_keyboard_string_sequence(&instance, "\n");
135assert_eq(instance.get_result(), "New");
136
137// ensure that disabled items can't activate
138instance.set_result("");
139slint_testing::send_mouse_click(&instance, 100., 10.);
140slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
141slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
142slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::DownArrow);
143slint_testing::send_keyboard_string_sequence(&instance, "\n");
144assert_eq(instance.get_result(), "");
145
146```
147
148```js
149var instance = new slint.TestCase();
150assert(instance.test);
151// click on the file menu
152slintlib.private_api.send_mouse_click(instance, 10., 10.);
153// navigate using the keys to the "Open Recent" menu item
154slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
155slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
156slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
157slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F703}");
158slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F700}");
159slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F700}");
160assert.equal(instance.result, "");
161slintlib.private_api.send_keyboard_string_sequence(instance, "\n");
162assert.equal(instance.result, "Recent 44");
163
164instance.result = "";
165slintlib.private_api.send_mouse_click(instance, 10., 10.);
166slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
167slintlib.private_api.send_keyboard_string_sequence(instance, "\n");
168assert.equal(instance.result, "New");
169
170// ensure that disabled items can't activate
171instance.result = "";
172slintlib.private_api.send_mouse_click(instance, 100., 10.);
173slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
174slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
175slintlib.private_api.send_keyboard_string_sequence(instance, "\u{F701}");
176slintlib.private_api.send_keyboard_string_sequence(instance, "\n");
177assert.equal(instance.result, "");
178
179*/
180