mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
184 lines
2.5 KiB
V
184 lines
2.5 KiB
V
const abc = 3
|
|
|
|
fn main() {
|
|
test_int()
|
|
test_fp()
|
|
test_unsafe()
|
|
test_alias(100, 9)
|
|
test_plus_assign()
|
|
test_minus_assign()
|
|
op_assigns_test()
|
|
if_expr_op_assigns_test()
|
|
}
|
|
|
|
fn if_expr_op_assigns_test() {
|
|
mut b := 1
|
|
one := 1
|
|
two := 2
|
|
three := 3
|
|
four := 4
|
|
five := 5
|
|
ten := 10
|
|
b += if false {0} else {one}
|
|
b -= if false {0} else {one}
|
|
assert b == 1
|
|
b |= if false {0} else {two}
|
|
assert b == 3
|
|
b &= if false {0} else {one}
|
|
assert b == 1
|
|
b ^= if false {0} else {five}
|
|
assert b == 4
|
|
b %= if false {0} else {three}
|
|
assert b == 1
|
|
b *= if false {0} else {ten}
|
|
b /= if false {0} else {ten}
|
|
assert b == 1
|
|
b <<= if false {0} else {four}
|
|
b >>>= if false {0} else {two}
|
|
b >>= if false {0} else {two}
|
|
assert b == 1
|
|
|
|
mut var := true
|
|
t := true
|
|
f := false
|
|
var &&= if false {f} else {t}
|
|
assert var == true
|
|
var &&= if false {t} else {f}
|
|
assert var == false
|
|
var ||= if false {f} else {t}
|
|
assert var == true
|
|
var ||= if false {t} else {f}
|
|
assert var == true
|
|
}
|
|
|
|
fn op_assigns_test() {
|
|
mut b := 1
|
|
one := 1
|
|
two := 2
|
|
three := 3
|
|
four := 4
|
|
five := 5
|
|
ten := 10
|
|
b += one
|
|
b -= one
|
|
assert b == 1
|
|
b |= two
|
|
assert b == 3
|
|
b &= one
|
|
assert b == 1
|
|
b ^= five
|
|
assert b == 4
|
|
b %= three
|
|
assert b == 1
|
|
b *= ten
|
|
b /= ten
|
|
assert b == 1
|
|
b <<= four
|
|
b >>>= two
|
|
b >>= two
|
|
assert b == 1
|
|
|
|
mut var := true
|
|
t := true
|
|
f := false
|
|
var &&= t
|
|
assert var == true
|
|
var &&= f
|
|
assert var == false
|
|
var ||= t
|
|
assert var == true
|
|
var ||= f
|
|
assert var == true
|
|
}
|
|
|
|
fn test_minus_assign() {
|
|
mut a := 3
|
|
a -= 3
|
|
assert a == 0
|
|
n := 2300
|
|
a -= n
|
|
assert a == -2300
|
|
}
|
|
|
|
fn test_plus_assign() {
|
|
mut a := 3
|
|
a += 3
|
|
assert a == 6
|
|
n := 2300
|
|
a += n
|
|
assert a == 2306
|
|
}
|
|
|
|
fn test_int() {
|
|
mut a := 100
|
|
mut b := a
|
|
b += b
|
|
b += 50
|
|
|
|
assert b == 250
|
|
|
|
mut c := u8(b)
|
|
d := 4
|
|
c += u8(-d)
|
|
// TODO: remove the int cast when unsigned integer print will be supported
|
|
println(int(c))
|
|
|
|
mut e := 3
|
|
assert e == 3
|
|
mut f := &e
|
|
assert *f == 3
|
|
unsafe{*f = 5}
|
|
assert *f == 5
|
|
assert e == 5
|
|
|
|
mut x := abc
|
|
assert x == 3
|
|
|
|
a = 16
|
|
a >>>= 2
|
|
a >>= 2
|
|
a <<= 4
|
|
assert a == 16
|
|
}
|
|
|
|
fn test_fp() {
|
|
// TODO: implement asserts for floats
|
|
a := 10.0
|
|
mut b := a
|
|
b += 15.0
|
|
assert int(b) == 25
|
|
b -= 10.0
|
|
assert int(b) == 15
|
|
b *= 4
|
|
assert int(b) == 60
|
|
b /= 2
|
|
assert int(b) == 30
|
|
|
|
b += a
|
|
assert int(b) == 40
|
|
b -= a
|
|
assert int(b) == 30
|
|
b *= a
|
|
assert int(b) == 300
|
|
b /= a
|
|
assert int(b) == 30
|
|
|
|
println(int(b))
|
|
}
|
|
|
|
fn test_unsafe() {
|
|
a := 10
|
|
|
|
unsafe {
|
|
b := 4
|
|
println(a + b)
|
|
}
|
|
}
|
|
|
|
type Integer = int
|
|
|
|
fn test_alias(a Integer, b Integer) {
|
|
e := a + b
|
|
assert e == a + b
|
|
println(int(e))
|
|
}
|