mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tests: add an operator overloading test
This commit is contained in:
parent
c408223bb5
commit
6ecb6cfe8e
@ -0,0 +1,75 @@
|
||||
struct Vec {
|
||||
x int
|
||||
y int
|
||||
}
|
||||
|
||||
pub fn (a Vec) str() string {
|
||||
return '{$a.x, $a.y}'
|
||||
}
|
||||
|
||||
fn (a Vec) + (b Vec) Vec {
|
||||
return Vec {
|
||||
a.x + b.x,
|
||||
a.y + b.y
|
||||
}
|
||||
}
|
||||
|
||||
fn (a Vec) - (b Vec) Vec {
|
||||
return Vec {
|
||||
a.x - b.x,
|
||||
a.y - b.y
|
||||
}
|
||||
}
|
||||
|
||||
fn (a Vec) * (b Vec) Vec {
|
||||
return Vec {
|
||||
a.x * b.x,
|
||||
a.y * b.y
|
||||
}
|
||||
}
|
||||
|
||||
fn (a Vec) / (b Vec) Vec {
|
||||
return Vec {
|
||||
a.x / b.x,
|
||||
a.y / b.y
|
||||
}
|
||||
}
|
||||
|
||||
fn (a Vec) % (b Vec) Vec {
|
||||
return Vec {
|
||||
a.x % b.x,
|
||||
a.y % b.y
|
||||
}
|
||||
}
|
||||
|
||||
fn test_operator_overloading_with_string_interpolation() {
|
||||
a := Vec{2, 3}
|
||||
b := Vec{4, 5}
|
||||
|
||||
c := a + b
|
||||
assert a.x + b.x == c.x
|
||||
assert a.y + b.y == c.y
|
||||
|
||||
d := a - b
|
||||
assert a.x - b.x == d.x
|
||||
assert a.y - b.y == d.y
|
||||
|
||||
e := a * b
|
||||
assert a.x * b.x == e.x
|
||||
assert a.y * b.y == e.y
|
||||
|
||||
f := a / b
|
||||
assert a.x / b.x == f.x
|
||||
assert a.y / b.y == f.y
|
||||
|
||||
g := a % b
|
||||
assert a.x % b.x == g.x
|
||||
assert a.y % b.y == g.y
|
||||
|
||||
assert c.str() == '{6, 8}'
|
||||
assert d.str() == '{-2, -2}'
|
||||
assert e.str() == '{8, 15}'
|
||||
assert f.str() == '{0, 0}'
|
||||
assert g.str() == '{2, 3}'
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user