v/vlib/v/tests/shared_lock_expr_test.v

44 lines
753 B
V

struct St {
mut:
i int
}
fn test_lock_expr() {
shared xx := St{ i: 173 }
shared y := St{ i: -57 }
mut m := 0
m = lock y { y.i }
n := rlock xx { xx.i }
assert m == -57
assert n == 173
}
struct Abc {
mut:
a f64
}
fn test_multi_objects() {
shared x := Abc{ a: 12.5 }
shared y := Abc{ a: -7.5 }
shared z := Abc{ a: 13.125 }
a, b, c := rlock z, x, y { y.a, z.a, x.a }
assert a == -7.5
assert b == 13.125
assert c == 12.5
}
fn (mut st Abc) getvals(mut a Abc, mut b Abc) (f64, f64, f64) {
return a.a, st.a, b.a
}
fn test_mult_ret_method() {
shared x := Abc{ a: 12.5 }
shared y := Abc{ a: -7.5 }
shared z := Abc{ a: 13.125 }
a, b, c := lock z, x, y { z.getvals(mut x, mut y) }
assert a == 12.5
assert b == 13.125
assert c == -7.5
}