public void TestEntityAndEventComparer() { var tax1 = new TaxRate(DateTime.Now, 123); var tax2 = new TaxRate(DateTime.Now, 123); var d1 = new EntityAndEvent(tax1, new DeDupEvent(() => { })); var d2 = new EntityAndEvent(tax1, new DeDupEvent(() => { })); var d3 = new EntityAndEvent(tax2, new DeDupEvent(() => { })); var n1 = new EntityAndEvent(tax1, new NewBookEvent()); var n2 = new EntityAndEvent(tax1, new NewBookEvent()); d1.Equals(d2).ShouldBeTrue(); d1.Equals(d3).ShouldBeFalse(); d1.Equals(n1).ShouldBeFalse(); n1.Equals(n2).ShouldBeFalse(); var ees = (new List <EntityAndEvent> { d1, d2, d3, n1, n2 }).Distinct().ToList(); ees.Select(x => x.EntityEvent.GetType().Name).ShouldEqual(new [] { "DeDupEvent", "DeDupEvent", "NewBookEvent", "NewBookEvent" }); ees[0].ShouldEqual(d1); ees[1].ShouldEqual(d3); }
public void TestEntityAndEventComparerDistinctOrder() { var tax1 = new TaxRate(DateTime.Now, 123); var tax2 = new TaxRate(DateTime.Now, 123); var d1 = new EntityAndEvent(tax1, new DeDupEvent(() => { })); var d2 = new EntityAndEvent(tax1, new DeDupEvent(() => { })); var d3 = new EntityAndEvent(tax2, new DeDupEvent(() => { })); var d4 = new EntityAndEvent(tax2, new DeDupEvent(() => { })); var ees = (new List <EntityAndEvent> { d1, d2, d3, d2, d4 }).Distinct().ToList(); ees.Count.ShouldEqual(2); ReferenceEquals(ees[0], d1).ShouldBeTrue(); ReferenceEquals(ees[0], d1).ShouldBeTrue(); ees[0].ShouldEqual(d1); ees[1].ShouldEqual(d3); }