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
4Foo := Rectangle {
5 pure callback hallo_alias <=> xxx.hallo;
6 callback clicked <=> are.clicked;
7 xxx := Rectangle {
8 pure callback hallo(int) -> int;
9 hallo(a) => { return a + 88; }
10 }
11
12 are := TouchArea { }
13}
14
15TestCase := Rectangle {
16
17 pure callback foo1_alias <=> foo1.hallo_alias;
18 pure callback foo2_alias <=> foo2.hallo_alias;
19
20 callback foo1_clicked <=> foo1.clicked;
21
22 callback call_foo2(int) -> int;
23 call_foo2(a) => { return foo2.hallo_alias(a); }
24
25 foo1 := Foo {
26 hallo_alias(a) => { return a + 22; }
27 }
28
29 foo2 := Foo {
30 clicked => { debug(42) }
31 }
32
33 property <bool> test: foo1_alias(100) == 122 && foo2_alias(100) == 188;
34}
35
36/*
37```rust
38let instance = TestCase::new().unwrap();
39assert_eq!(instance.invoke_foo1_alias(100), 122);
40assert_eq!(instance.invoke_foo2_alias(100), 188);
41assert_eq!(instance.invoke_call_foo2(100), 188);
42instance.on_foo2_alias(|val| val - 20);
43assert_eq!(instance.invoke_call_foo2(200), 180);
44```
45
46```cpp
47auto handle = TestCase::create();
48const TestCase &instance = *handle;
49assert_eq(instance.invoke_foo1_alias(100), 122);
50assert_eq(instance.invoke_foo2_alias(100), 188);
51assert_eq(instance.invoke_call_foo2(100), 188);
52instance.on_foo2_alias([](auto val){return val - 20;});
53assert_eq(instance.invoke_call_foo2(200), 180);
54```
55
56
57```js
58var instance = new slint.TestCase();
59assert.equal(instance.foo1_alias(100), 122);
60assert.equal(instance.foo2_alias(100), 188);
61assert.equal(instance.call_foo2(100), 188);
62```
63*/
64