added tests, actually implemented $ and ==

This commit is contained in:
Simon Hafner 2013-02-21 15:11:48 -06:00
commit bf82f79f1e
2 changed files with 4 additions and 3 deletions

View file

@ -1532,7 +1532,7 @@ iterator fieldPairs*[S: tuple|object, T: tuple|object](x: S, y: T): tuple[
## The current implementation also has a bug that affects symbol binding ## The current implementation also has a bug that affects symbol binding
## in the loop body. ## in the loop body.
proc `==`*[T: tuple](x, y: T): bool = proc `==`*[T: tuple|object](x, y: T): bool =
## generic ``==`` operator for tuples that is lifted from the components ## generic ``==`` operator for tuples that is lifted from the components
## of `x` and `y`. ## of `x` and `y`.
for a, b in fields(x, y): for a, b in fields(x, y):
@ -1557,7 +1557,7 @@ proc `<`*[T: tuple](x, y: T): bool =
if c > 0: return false if c > 0: return false
return false return false
proc `$`*[T: tuple](x: T): string = proc `$`*[T: tuple|object](x: T): string =
## generic ``$`` operator for tuples that is lifted from the components ## generic ``$`` operator for tuples that is lifted from the components
## of `x`. Example: ## of `x`. Example:
## ##

View file

@ -13,7 +13,8 @@ proc initObject(x: int): Obj =
suite "object basic methods": suite "object basic methods":
test "it should convert an objcet to a string": test "it should convert an objcet to a string":
var obj = makeObj(1) var obj = makeObj(1)
discard $obj # Should be "obj: (foo: 1)" or similar.
check($obj == "(foo: 1)")
test "it should test equality based on fields": test "it should test equality based on fields":
check(initObj(1) == initObj(1)) check(initObj(1) == initObj(1))
test "it should test equality based on fields for refs too": test "it should test equality based on fields for refs too":