slint/tests/cases/callbacks/handler.60
2021-07-02 15:55:54 +02:00

74 lines
2.5 KiB
Text

/* LICENSE BEGIN
This file is part of the SixtyFPS Project -- https://sixtyfps.io
Copyright (c) 2021 Olivier Goffart <olivier.goffart@sixtyfps.io>
Copyright (c) 2021 Simon Hausmann <simon.hausmann@sixtyfps.io>
SPDX-License-Identifier: GPL-3.0-only
This file is also available under commercial licensing terms.
Please contact info@sixtyfps.io for more information.
LICENSE END */
TestCase := Rectangle {
callback test_callback;
callback test_callback2;
callback test_callback3;
property<int> callback_emission_count;
test_callback => { callback_emission_count += 1; }
test_callback2 => { callback_emission_count = 88; root.test_callback3(); }
}
/*
```cpp
auto handle = TestCase::create();
const TestCase &instance = *handle;
int callback_3_emited = 0;
instance.on_test_callback3([&]{ callback_3_emited++; });
instance.set_callback_emission_count(0);
assert_eq(instance.get_callback_emission_count(), 0);
instance.invoke_test_callback();
assert_eq(instance.get_callback_emission_count(), 1);
instance.invoke_test_callback();
assert_eq(instance.get_callback_emission_count(), 2);
assert_eq(callback_3_emited, 0);
instance.invoke_test_callback2();
assert_eq(instance.get_callback_emission_count(), 88);
assert_eq(callback_3_emited, 1);
```
```rust
let instance = TestCase::new();
let callback_3_emited = std::rc::Rc::new(std::cell::Cell::new(0));
instance.on_test_callback3({
let callback_3_emited = callback_3_emited.clone();
move || callback_3_emited.set(callback_3_emited.get() + 1)
});
instance.set_callback_emission_count(0);
assert_eq!(instance.get_callback_emission_count(), 0);
instance.invoke_test_callback();
assert_eq!(instance.get_callback_emission_count(), 1);
instance.invoke_test_callback();
assert_eq!(instance.get_callback_emission_count(), 2);
assert_eq!(callback_3_emited.get(), 0);
instance.invoke_test_callback2();
assert_eq!(instance.get_callback_emission_count(), 88);
assert_eq!(callback_3_emited.get(), 1);
```
```js
var callback_3_emited = 0;
var instance = new sixtyfps.TestCase({
test_callback3: function() { callback_3_emited++; }
});
instance.callback_emission_count = 0;
assert.equal(instance.callback_emission_count, 0);
instance.test_callback();
assert.equal(instance.callback_emission_count, 1);
let x = instance.test_callback;
assert.equal(instance.callback_emission_count, 1);
x()
assert.equal(instance.callback_emission_count, 2);
assert.equal(callback_3_emited, 0);
instance.test_callback2();
assert.equal(instance.callback_emission_count, 88);
assert.equal(callback_3_emited, 1);
```
*/