diff options
Diffstat (limited to 'v_windows/v/old/vlib/v/tests/cross_assign_test.v')
-rw-r--r-- | v_windows/v/old/vlib/v/tests/cross_assign_test.v | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/v_windows/v/old/vlib/v/tests/cross_assign_test.v b/v_windows/v/old/vlib/v/tests/cross_assign_test.v new file mode 100644 index 0000000..43014a1 --- /dev/null +++ b/v_windows/v/old/vlib/v/tests/cross_assign_test.v @@ -0,0 +1,159 @@ +// Test cross assign of array elements +fn test_cross_assign_of_array() { + mut a := [0, 1] + a[0], a[1] = a[1], a[0] + assert a[0] == 1 + assert a[1] == 0 + + mut b1 := [1, 2, 3] + mut b2 := 4 + b1[2], b2, b1[0] = b1[0], b1[2], 5 + assert b1 == [5, 2, 1] + assert b2 == 3 +} + +// Test cross assign of array elements in function +fn foo1(mut arr []int) { + arr[0], arr[1] = arr[1], arr[0] +} + +fn test_cross_assign_of_array_in_fn() { + mut arr := [1, 2] + foo1(mut arr) + assert arr[0] == 2 + assert arr[1] == 1 +} + +// Test cross assign of map values +fn test_cross_assign_of_map() { + mut a := map{ + 'one': 1 + 'two': 2 + } + a['one'], a['two'] = a['two'], a['one'] + println(a) + assert a['one'] == 2 + assert a['two'] == 1 +} + +// Test cross assign of map values in function +fn foo2(mut a map[string]int) { + a['one'], a['two'] = a['two'], a['one'] +} + +fn test_cross_assign_of_map_in_fn() { + mut a := map{ + 'one': 1 + 'two': 2 + } + foo2(mut a) + assert a['one'] == 2 + assert a['two'] == 1 +} + +// Test cross assign of struct fields +struct Zoo { +mut: + a int + b int +} + +fn test_cross_assign_of_struct() { + mut x := Zoo{ + a: 1 + b: 2 + } + x.a, x.b = x.b, x.a + // println(x) + assert x.a == 2 + assert x.b == 1 +} + +// Test cross assign of struct fields in function +struct Foo { +mut: + a int + b int +} + +fn foo3(mut f Foo) { + f.a, f.b = f.b, f.a +} + +fn test_cross_assign_of_struct_in_fn() { + mut a := Foo{ + a: 1 + b: 2 + } + foo3(mut a) + println(a) + assert a.a == 2 + assert a.b == 1 +} + +// Test cross assign of mixed types +fn test_cross_assign_of_mixed_types() { + mut a := [0, 1] + mut m := map{ + 'one': 1 + 'two': 2 + } + mut x := Zoo{ + a: 1 + b: 2 + } + + a[0], m['one'], x.a, a[1], m['two'], x.b = a[1], m['two'], x.b, a[0], m['one'], x.a + + assert a == [1, 0] + assert m['one'] == 2 + assert m['two'] == 1 + assert x.a == 2 + assert x.b == 1 +} + +// Test cross assign of mixed types in function +fn foo(mut a []int, mut m map[string]int, mut x Zoo) { + a[0], m['one'], x.a, a[1], m['two'], x.b = a[1], m['two'], x.b, a[0], m['one'], x.a +} + +fn test_cross_assign_of_mixed_types_in_fn() { + mut a := [0, 1] + mut m := map{ + 'one': 1 + 'two': 2 + } + mut x := Zoo{ + a: 1 + b: 2 + } + + foo(mut a, mut m, mut x) + + assert a == [1, 0] + assert m['one'] == 2 + assert m['two'] == 1 + assert x.a == 2 + assert x.b == 1 +} + +// Test cross assign of complex types +fn test_cross_assign_of_complex_types() { + mut a := [0, 1] + mut m := map{ + 'one': 1 + 'two': 2 + } + mut x := Zoo{ + a: 1 + b: 2 + } + + a[0], m['one'], x.a, a[1], m['two'], x.b = a[1] + 1, -m['two'], x.b, a[0] * 2, m['one'] * 3, x.a - x.b + + assert a == [2, 0] + assert m['one'] == -2 + assert m['two'] == 3 + assert x.a == 2 + assert x.b == -1 +} |