public void GetSumType_ExpandFalse() { Type GetSumType <T>() => RemoteGroupExpressionCompiler.GetSumType(typeof(T), false); // Validation: check lambda type in new T[0].Sum(i => i) Assert.Equal(typeof(int), GetSumType <sbyte>()); Assert.Equal(typeof(int), GetSumType <byte>()); Assert.Equal(typeof(int), GetSumType <short>()); Assert.Equal(typeof(int), GetSumType <ushort>()); Assert.Equal(typeof(int), GetSumType <int>()); Assert.Equal(typeof(long), GetSumType <uint>()); Assert.Equal(typeof(long), GetSumType <long>()); Assert.Equal(typeof(decimal), GetSumType <ulong>()); Assert.Equal(typeof(float), GetSumType <float>()); Assert.Equal(typeof(double), GetSumType <double>()); Assert.Equal(typeof(decimal), GetSumType <decimal>()); }
public void GetSumType_ExpandTrue() { Type GetSumType <T>() => RemoteGroupExpressionCompiler.GetSumType(typeof(T), true); // Don't convert integer types to decimal because SQL decimals have variable precision // Except for UInt64 for which there is no better choice Assert.Equal(typeof(long), GetSumType <sbyte>()); Assert.Equal(typeof(long), GetSumType <byte>()); Assert.Equal(typeof(long), GetSumType <short>()); Assert.Equal(typeof(long), GetSumType <ushort>()); Assert.Equal(typeof(long), GetSumType <int>()); Assert.Equal(typeof(long), GetSumType <uint>()); Assert.Equal(typeof(long), GetSumType <long>()); Assert.Equal(typeof(decimal), GetSumType <ulong>()); Assert.Equal(typeof(double), GetSumType <float>()); Assert.Equal(typeof(double), GetSumType <double>()); Assert.Equal(typeof(decimal), GetSumType <decimal>()); }