public void ItemOnThreeTuple() { var t = new Tuple<int, int, int>(-1, -2, -3); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); Assert.AreEqual(t.Item3, t.Item(2)); }
public void ItemOnTwoTuple() { var t = new Tuple <int, int>(-1, -2); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); }
public void ItemOnThreeTuple() { var t = new Tuple <int, int, int>(-1, -2, -3); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); Assert.AreEqual(t.Item3, t.Item(2)); }
public void ItemOnFourTuple() { var t = new Tuple<int, int, int, int>(-1, -2, -3, -4); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); Assert.AreEqual(t.Item3, t.Item(2)); Assert.AreEqual(t.Item4, t.Item(3)); }
public void ItemOnFourTuple() { var t = new Tuple <int, int, int, int>(-1, -2, -3, -4); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); Assert.AreEqual(t.Item3, t.Item(2)); Assert.AreEqual(t.Item4, t.Item(3)); }
public static IEnumerable <object> Where <T1, T2, T3, T4>(this Tuple <T1, T2, T3, T4> value, Func <object, bool> func) { for (int i = 0; i < value.Length(); i++) { if (func(value.Item(i))) { yield return(value.Item(i)); } } }
public static IEnumerable AsEnumerable <T1, T2, T3, T4, T5, T6, T7>(this Tuple <T1, T2, T3, T4, T5, T6, T7> value) { for (int i = 0; i < value.Length(); i++) { yield return(value.Item(i)); } }
//REMARK: AsEnumerable seems to be required for C# because C# demands instance an Instance Method for MoveNext and a Property for Current. //VB.NET allows the Use of an extension Method for MoveNext and and Extension Method for Current. //And since we implemented AsEnumerable with yield we loose the ability to for each over tuples in VB.NET withouth AsEnumerable too;( //TODO: decide whether to bring for each withouth AsEnumerable back in VB.NET. public static IEnumerable AsEnumerable <T>(this Tuple <T> value) { for (int i = 0; i < value.Length(); i++) { yield return(value.Item(i)); } }
public static IEnumerable <TResult> Select <T, TResult>(this Tuple <T> value, Func <object, TResult> func) { int i = -1; while (++i < value.Length()) { yield return(func(value.Item(i))); } }
public static IEnumerable <TResult> Select <T1, T2, T3, T4, T5, T6, T7, TResult>(this Tuple <T1, T2, T3, T4, T5, T6, T7> value, Func <object, int, TResult> func) { int i = -1; while (++i < value.Length()) { yield return(func(value.Item(i), i)); } }
public void ItemOnSevenTuple() { var t = new Tuple<int, int, int, int, int, int, int>(-1, -2, -3, -4, -5, -6, -7); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); Assert.AreEqual(t.Item3, t.Item(2)); Assert.AreEqual(t.Item4, t.Item(3)); Assert.AreEqual(t.Item5, t.Item(4)); Assert.AreEqual(t.Item6, t.Item(5)); Assert.AreEqual(t.Item7, t.Item(6)); }
public void ItemOnSevenTuple() { var t = new Tuple <int, int, int, int, int, int, int>(-1, -2, -3, -4, -5, -6, -7); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); Assert.AreEqual(t.Item3, t.Item(2)); Assert.AreEqual(t.Item4, t.Item(3)); Assert.AreEqual(t.Item5, t.Item(4)); Assert.AreEqual(t.Item6, t.Item(5)); Assert.AreEqual(t.Item7, t.Item(6)); }
public static int Min <T1, T2, T3, T4, T5, T6>(this Tuple <T1, T2, T3, T4, T5, T6> value, Func <object, int> func) { Contract.Requires <ArgumentNullException>(value != null); Contract.Requires <ArgumentNullException>(func != null); int min = int.MaxValue; int i = value.Count(); while (0 < i) { i--; object v = value.Item(i); int fValue = func(v); min = Math.Min(min, fValue); } return(min); }
public static double?Max <T1, T2, T3, T4, T5>(this Tuple <T1, T2, T3, T4, T5> value, Func <object, double?> func) { Contract.Requires <ArgumentNullException>(value != null); Contract.Requires <ArgumentNullException>(func != null); double?max = double.MinValue; int i = value.Count(); while (0 < i) { i--; object v = value.Item(i); double?fValue = func(v); if (fValue.HasValue) { max = Math.Max(max.Value, fValue.Value); } } return(max); }
public void ItemOnOneTuple() { var t = new Tuple<int>(-1); Assert.AreEqual(t.Item1, t.Item(0)); }
public void ItemOnTwoTuple() { var t = new Tuple<int, int>(-1, -2); Assert.AreEqual(t.Item1, t.Item(0)); Assert.AreEqual(t.Item2, t.Item(1)); }
public void ItemOnOneTuple() { var t = new Tuple <int>(-1); Assert.AreEqual(t.Item1, t.Item(0)); }