public void It_handles_class_identifiers() { var helper = new IdHelperForClassType <ClassId>(); ClassId idDefault = default; var id1 = new ClassId(1); var id2 = new ClassId(2); // ReSharper disable ExpressionIsAlwaysNull helper.IsDefaultValue(idDefault).ShouldBeTrue(); helper.IsDefaultValue(id1).ShouldBeFalse(); helper.AreEqual(idDefault, idDefault).ShouldBeTrue(); helper.AreEqual(id2, id2).ShouldBeTrue(); helper.AreEqual(idDefault, id1).ShouldBeFalse(); helper.Compare(idDefault, id1).ShouldBe(-1); helper.Compare(id1, idDefault).ShouldBe(1); helper.Compare(idDefault, idDefault).ShouldBe(0); helper.Compare(id1, id2).ShouldBe(-1); helper.Compare(id2, id1).ShouldBe(1); helper.Compare(id2, id2).ShouldBe(0); helper.GetHashCode(idDefault).ShouldBe(0); helper.GetHashCode(id1).ShouldBe(id1.GetHashCode()); helper.GetHashCode(id2).ShouldBe(id2.GetHashCode()); // ReSharper restore ExpressionIsAlwaysNull }
public void Value_type_tuple() { // This is a bit contrived, just need an easy class (ie non-value type) var helper = new IdHelperForClassType<Tuple<int, int>>(); var tuple1 = new Tuple<int, int>(1, 2); var tuple2 = new Tuple<int, int>(1, 3); var tuple1Again = new Tuple<int, int>(1, 2); Assert.AreEqual(true, helper.IsNull(null)); Assert.AreEqual(true, helper.IsDefaultValue(null)); Assert.AreEqual(false, helper.IsDefaultValue(tuple1)); Assert.AreEqual(true, helper.AreEqual(null, null)); Assert.AreEqual(true, helper.AreEqual(tuple1, tuple1Again)); Assert.AreEqual(-1, helper.Compare(null, tuple1)); Assert.AreEqual(-1, helper.Compare(tuple1, tuple2)); Assert.AreEqual(+1, helper.Compare(tuple2, null)); Assert.AreEqual(+1, helper.Compare(tuple2, tuple1)); Assert.That(helper.Compare(null, null), Is.EqualTo(0)); Assert.AreEqual(0, helper.Compare(tuple1, tuple1Again)); Assert.AreEqual(tuple1.GetHashCode(), helper.GetHashCode(tuple1)); Assert.AreEqual(0, helper.GetHashCode(null)); }