public void ShouldHandleAggregate() { var query = _query.Select(o => o.Id); var sumId1 = query.Aggregate((i1, i2) => i1 + i2); var dynSumId1 = query.Aggregate("(i1, i2) => i1 + i2"); Assert.Equal(sumId1, dynSumId1); var sumId2 = query.Aggregate(42, (i1, i2) => i1 + i2); var dynSumId2 = query.Aggregate(42, "(i1, i2) => i1 + i2"); Assert.Equal(sumId2, dynSumId2); var sumId3 = query.Aggregate(42, (i1, i2) => i1 + i2, i => i.ToString()); var dynSumId3 = query.Aggregate(42, "(i1, i2) => i1 + i2", "i => i.ToString()"); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(null, "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(null, (object)null, "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, (object)null, "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, 42, "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(null, (object)null, "", "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, (object)null, "", "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, 42, "", "")); Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, 42, "Id", "")); }