Commit 33d974a5 authored by Joseph Musser's avatar Joseph Musser Committed by Marc Gravell

Fixes mapping for C# tuples with more than seven elements (#1242)

* Failing tests for tuples larger than 7

* Special-case IL generation for ValueTuple

* Make value-processing logic available to ValueTuple generation
parent a5256b7d
......@@ -51,5 +51,48 @@ public void TupleReturnValue_Works_NamesIgnored()
Assert.Equal(42, val.id);
Assert.Equal("Fred", val.name);
}
[Fact]
public void TupleReturnValue_Works_With8Elements()
{
// C# encodes an 8-tuple as ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8>>
var val = connection.QuerySingle<(int e1, int e2, int e3, int e4, int e5, int e6, int e7, int e8)>(
"select 1, 2, 3, 4, 5, 6, 7, 8");
Assert.Equal(1, val.e1);
Assert.Equal(2, val.e2);
Assert.Equal(3, val.e3);
Assert.Equal(4, val.e4);
Assert.Equal(5, val.e5);
Assert.Equal(6, val.e6);
Assert.Equal(7, val.e7);
Assert.Equal(8, val.e8);
}
[Fact]
public void TupleReturnValue_Works_With15Elements()
{
// C# encodes a 15-tuple as ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15>>>
var val = connection.QuerySingle<(int e1, int e2, int e3, int e4, int e5, int e6, int e7, int e8, int e9, int e10, int e11, int e12, int e13, int e14, int e15)>(
"select 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15");
Assert.Equal(1, val.e1);
Assert.Equal(2, val.e2);
Assert.Equal(3, val.e3);
Assert.Equal(4, val.e4);
Assert.Equal(5, val.e5);
Assert.Equal(6, val.e6);
Assert.Equal(7, val.e7);
Assert.Equal(8, val.e8);
Assert.Equal(9, val.e9);
Assert.Equal(10, val.e10);
Assert.Equal(11, val.e11);
Assert.Equal(12, val.e12);
Assert.Equal(13, val.e13);
Assert.Equal(14, val.e14);
Assert.Equal(15, val.e15);
}
}
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment