public MatrixTheoryData(TheoryData <T1> data1, TheoryData <T2, T3, T4> data2) { Contract.Assert(data1 != null && data1.Any()); Contract.Assert(data2 != null && data2.Any()); foreach (var t1 in data1) { foreach (var t2 in data2) { Add((T1)t1[0], (T2)t2[0], (T3)t2[1], (T4)t2[2]); } } }