you want.
assert p.eql? not p.equal? (equal is more restrictive/exact than eql?).
I'm not entirely sure, but I believe when you call p.children[0].parent you are actually instantiating in memory an new object of Parent class. So, #<Parent:0x39f3018 > is exactly equal to #<Parent:0x39f3020 >
so in the end use == or eql? instead of equal? if your not wanting to check for EXACTLY the same instance of Parent.
Hope that helps, Jim