Only call CreateValue*() once per method.
authorJonathan Pryor <jonpryor@vt.edu>
Wed, 9 Jun 2010 02:55:38 +0000 (22:55 -0400)
committerJonathan Pryor <jonpryor@vt.edu>
Wed, 9 Jun 2010 03:00:20 +0000 (23:00 -0400)
commitb3c123d1082d77e36a09649627a7c19a1b5bc45b
tree98a0e3ae87c4cda28f5a3bfae6359feca847d341
parent0b73778643001f6d517b646a339f2764c632159a
Only call CreateValue*() once per method.

If 'T' isn't "comparable" (e.g. doesn't override object.Equals() or implement
IEquatable<T>), then the default behavior for most collections is to use
reference equality.  If we only call e.g. CreateValueA() once per method and
use this same instance for comparison purposes, we "cleanly" fallback to
reference equality if T isn't comparable.

Result: T no longer needs to be a comparable type (which is proper, as
collections can contain non-comparable types).
src/Cadenza/Test/Cadenza.Collections/ICollectionContract.cs