1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/v/tests/operator_overloading_with_reference_operands_test.v

48 lines
845 B
V

struct Resources {
mut:
hru u64
sru u64
cru u64
mru u64
}
fn (a &Resources) < (b &Resources) bool {
return a.hru < b.hru && a.sru < b.sru && a.cru < b.cru && a.mru < b.mru
}
fn (a &Resources) == (b &Resources) bool {
return a.hru == b.hru
}
fn test_struct_with_reference_operands_for_the_overloaded_operators_do_work() {
aa := Resources{}
bb := Resources{}
assert dump(aa < bb) == false
assert dump(aa == bb) == true
assert dump(aa != bb) == false
assert dump(aa > bb) == false
assert dump(aa <= bb) == true
assert dump(aa >= bb) == true
}
// Issue: https://github.com/vlang/v/issues/15859
struct Foo {
id u32
x u32
y u32
}
fn (f &Foo) == (o &Foo) bool {
return f.id == o.id
}
fn test_eq_operator_with_reference_operands() {
a := Foo{1, 4, 5}
b := Foo{1, 9, 10}
if a == b {
assert true
return
}
assert false
}