1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/v/tests/mut_test.v
2020-04-21 05:49:03 +02:00

50 lines
798 B
V

struct A {
pub mut:
v []int
}
struct B {
pub mut:
a []A
}
fn foo(b int, a mut []int) {
a[0] = 7
// a << 4
}
fn test_mut() {
mut numbers := [1, 2, 3]
foo(7, mut numbers)
assert numbers.len == 3
// TODO bring back once << works with mutable args
// assert numbers.len == 4
// assert numbers[0] == 7
// assert numbers[3] == 4
println(numbers)
n := 1
mut b := (&n)
//
(*b) = 10
// mut b := mut a
// b = 10
}
fn test_mut_2() {
zero := 0
mut b := B{}
b.a << A{}
b.a[0].v = [9, 8, 7]
b.a[0].v << 6
b.a[zero].v << 5
b.a[0].v[zero] = 3
b.a[0].v[b.a[zero].v[zero]] += 2 - 1 // TODO
b.a[0].v[b.a[0].v[zero]] += 2 - 1 // TODO
assert b.a[0].v.len == 5
assert b.a[0].v[0] == 3
assert b.a[0].v[1] == 8
assert b.a[0].v[2] == 7
assert b.a[0].v[3] == 8
assert b.a[0].v[4] == 5
}