use dcl_data_structures::prelude::{ArrayGrid, ArrayType, PointIndex};
const WIDTH: usize = 5;
const HEIGHT: usize = 5;
const DEPTH: usize = 5;
const TIME: usize = 5;
fn get_array_grid<T: Copy + Default>(
array_type: ArrayType,
) -> ArrayGrid<T, WIDTH, HEIGHT, DEPTH, TIME> {
ArrayGrid::new(array_type)
}
pub fn main() {
let array_type = ArrayType::Array1D;
let ag = get_array_grid(array_type);
let p = PointIndex::new1d(1);
ag.set(p, 42);
let res = ag.get(p);
assert_eq!(res, 42);
let array_type = ArrayType::Array3D;
let ag = get_array_grid(array_type);
let p = PointIndex::new3d(1, 2, 3);
ag.set(p, 3);
let res = ag.get(p);
let exp = 3;
assert_eq!(res, exp);
#[derive(Debug, Default, Copy, Clone)]
struct MyStruct {
number: usize,
mod_five: bool,
}
let array_type = ArrayType::Array4D;
let ag: ArrayGrid<MyStruct, WIDTH, HEIGHT, DEPTH, TIME> = ArrayGrid::new(array_type);
let idx_t0 = PointIndex::new4d(1, 1, 1, 0);
let idx_t1 = PointIndex::new4d(1, 1, 1, 1);
let idx_t2 = PointIndex::new4d(1, 1, 1, 2);
let my_struct_t0 = MyStruct {
number: 23,
mod_five: false,
};
let my_struct_t1 = MyStruct {
number: 24,
mod_five: false,
};
let my_struct_t2 = MyStruct {
number: 25,
mod_five: true,
};
ag.set(idx_t0, my_struct_t0);
ag.set(idx_t1, my_struct_t1);
ag.set(idx_t2, my_struct_t2);
let res = ag.get(idx_t2);
let exp_number = 25;
assert_eq!(res.number, exp_number);
let exp_mod = true;
assert_eq!(res.mod_five, exp_mod);
}