added $ for refs and removed == for ref test

== in refs should use the pointer to compare
This commit is contained in:
Simon Hafner
2013-02-21 16:31:35 -06:00
parent bf82f79f1e
commit e366eeaafc
2 changed files with 14 additions and 8 deletions

View File

@@ -1557,6 +1557,8 @@ proc `<`*[T: tuple](x, y: T): bool =
if c > 0: return false
return false
proc `$`*[T: ref](x: T): string = $x[]
proc `$`*[T: tuple|object](x: T): string =
## generic ``$`` operator for tuples that is lifted from the components
## of `x`. Example:

View File

@@ -7,15 +7,19 @@ proc makeObj(x: int): ref Obj =
new(result)
result.foo = x
proc initObject(x: int): Obj =
proc initObj(x: int): Obj =
result.foo = x
suite "object basic methods":
test "it should convert an objcet to a string":
var obj = makeObj(1)
template stringTest(init: expr) =
test "it should convert an object to a string":
var obj = `init`(1)
# Should be "obj: (foo: 1)" or similar.
check($obj == "(foo: 1)")
test "it should test equality based on fields":
check(initObj(1) == initObj(1))
test "it should test equality based on fields for refs too":
check(makeObj(1) == makeObj(1))
suite "object basic methods":
suite "ref":
stringTest(makeObj)
suite "value":
stringTest(initObj)
test "it should test equality based on fields":
check(initObj(1) == initObj(1))