private static IEnumerable <CFCompatibilityTestSubject <string> > SubjectsToTest()
        {
            DateTime vid = new DateTime(1971, 5, 1);

            yield return(new CFCompatibilityTestSubject <string>("foo").
                         List(string.Empty, "foo.2", "foo.3").
                         Longs(long.MinValue, 0, long.MaxValue).
                         DateTime(vid).
                         NullableInts(int.MinValue, 0, int.MaxValue, null));

            yield return(new CFCompatibilityTestSubject <string>("bar").
                         List("bar.1", string.Empty, "bar.3").
                         Longs().
                         DateTime(vid).
                         NullableInts(null));

            DateTime vid2 = new DateTime(1998, 5, 1);
            CFCompatibilityTestSubject <string> baz = new CFCompatibilityTestSubject <string>("baz").
                                                      List("baz.1", "baz.2", string.Empty).
                                                      Longs().
                                                      DateTime(vid2).
                                                      NullableInts(vid2.Day, vid2.Month, vid2.Year);

            yield return(baz);

            yield return(new CFCompatibilityTestSubject <string>("foobar").
                         List(string.Empty, "foobar.2", "foobar.3").
                         Longs().
                         DateTime(DateTime.MaxValue).
                         NullableInts(null).
                         Child(baz));
        }
        public override bool Equals(object obj)
        {
            CFCompatibilityTestSubject <T> lhs = obj as CFCompatibilityTestSubject <T>;

            if (null == lhs)
            {
                return(false);
            }

            if (lhs.GetType() != GetType())
            {
                return(false);
            }

            return
                (Equals(lhs._child, _child) &&
                 lhs._dateTime == _dateTime &&
                 lhs._name == _name &&
                 AreEqual(lhs._ids, _ids) &&
                 AreEqual(lhs._longs, _longs));
        }
 public CFCompatibilityTestSubject <T> Child(CFCompatibilityTestSubject <string> child)
 {
     _child = child;
     return(this);
 }