slint/tests/cases/models/array.slint
2023-07-10 10:12:11 +02:00

79 lines
2.4 KiB
Text

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.1 OR LicenseRef-Slint-commercial
export TestCase := Rectangle {
property<[int]> ints: [1, 2, 3, 4, 5];
property<int> num_ints: ints.length;
property<int> n: ints[ints[4] - ints[1]];
property<int> operations: ints.length < 1 ? ints.length : ints.length + ints.length;
property<[{a: [int]}]> empty_model;
property<[[int]]> array_of_array: [ints, ints, ints];
property<bool> test: num_ints == 5 && operations == 10
&& hello_world == (["", "world"])[1] && empty_model.length == 0 && empty_model[45].a.length == 0
&& array_of_array[1][1] == 2;
property<int> third_int: ints[2];
property<string> hello_world: [{t: "hello"}, {t: "world"}][1].t;
}
/*
```cpp
auto handle = TestCase::create();
const TestCase &instance = *handle;
assert_eq(instance.get_num_ints(), 5);
assert_eq(instance.get_n(), 4);
assert_eq(instance.get_third_int(), 3);
auto model = std::make_shared<slint::VectorModel<int>>(std::vector<int>{1, 2, 3, 4, 5, 6, 7});
instance.set_ints(model);
assert_eq(instance.get_num_ints(), 7);
assert_eq(instance.get_third_int(), 3);
model->push_back(8);
assert_eq(instance.get_num_ints(), 8);
model->set_row_data(2, 100);
assert_eq(instance.get_third_int(), 100);
assert_eq(instance.get_hello_world(), "world");
```
```rust
use slint::Model;
let instance = TestCase::new().unwrap();
assert_eq!(instance.get_num_ints(), 5);
assert_eq!(instance.get_n(), 4);
assert_eq!(instance.get_third_int(), 3);
let model: std::rc::Rc<slint::VecModel<i32>> = std::rc::Rc::new(vec![1, 2, 3, 4, 5, 6, 7].into());
instance.set_ints(slint::ModelRc::from(model.clone()));
assert_eq!(instance.get_num_ints(), 7);
assert_eq!(instance.get_third_int(), 3);
model.push(8);
assert_eq!(instance.get_num_ints(), 8);
model.set_row_data(2, 100);
assert_eq!(instance.get_third_int(), 100);
assert_eq!(instance.get_hello_world(), slint::SharedString::from("world"));
```
```js
var instance = new slint.TestCase();
assert.equal(instance.num_ints, 5);
assert.equal(instance.n, 4);
assert.equal(instance.third_int, 3);
let model = new slintlib.ArrayModel([1, 2, 3, 4, 5, 6, 7]);
instance.ints = model;
assert.equal(instance.num_ints, 7);
assert.equal(instance.third_int, 3);
model.push(8);
assert.equal(instance.num_ints, 8);
model.setRowData(2, 100);
assert.equal(instance.third_int, 100);
assert.equal(instance.hello_world, "world");
```
*/