using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit; using TupleStudy; namespace ValueTupleStudyTest { /// /// ValueTuple 需要.net framework 4.7及以上 /// .net framework 4.7及以下,需要Nuget引用包System.ValueTuple 库 /// public class ValueTupleStudyTest { private ValueTupleStudy valueTupleStudy; /// /// 构造函数 /// public ValueTupleStudyTest() { valueTupleStudy = new ValueTupleStudy(); } /// /// 使用构造函数创建值元组 /// [Fact] public void CreateValueTuple_Test() { //创建包含零个元组的值元组 var zeroTuple = this.valueTupleStudy.CreateValueTuple(); Assert.IsType(zeroTuple); //1个元组的值元组 var oneTuple = valueTupleStudy.CreateValueTuple(1); Assert.Equal(1, oneTuple.Item1); Assert.Equal("first", new ValueTuple("first").Item1); //2个元组的值元组 var twoTuple = valueTupleStudy.CreateValueTuple(1, 2); Assert.Equal(1, twoTuple.Item1); Assert.Equal(2, twoTuple.Item2); //3个元组的值元组 var threeTuple = valueTupleStudy.CreateValueTuple(1, 2, 3); Assert.Equal(1, threeTuple.Item1); Assert.Equal(2, threeTuple.Item2); Assert.Equal(3, threeTuple.Item3); //4个元组的值元组 var fourTuple = valueTupleStudy.CreateValueTuple(1, 2, 3, 4); Assert.Equal(1, fourTuple.Item1); Assert.Equal(2, fourTuple.Item2); Assert.Equal(3, fourTuple.Item3); Assert.Equal(4, fourTuple.Item4); //5个元组的值元组 var fiveTuple = valueTupleStudy.CreateValueTuple(1, 2, 3, 4, 5); Assert.Equal(1, fiveTuple.Item1); Assert.Equal(2, fiveTuple.Item2); Assert.Equal(3, fiveTuple.Item3); Assert.Equal(4, fiveTuple.Item4); Assert.Equal(5, fiveTuple.Item5); //6个元组的值元组 var sixTuple = valueTupleStudy.CreateValueTuple(1, 2, 3, 4, 5, 6); Assert.Equal(1, sixTuple.Item1); Assert.Equal(2, sixTuple.Item2); Assert.Equal(3, sixTuple.Item3); Assert.Equal(4, sixTuple.Item4); Assert.Equal(5, sixTuple.Item5); Assert.Equal(6, sixTuple.Item6); //7个元组的值元组 var sevenTuple = valueTupleStudy.CreateValueTuple(1, 2, 3, 4, 5, 6, 7); Assert.Equal(1, sevenTuple.Item1); Assert.Equal(2, sevenTuple.Item2); Assert.Equal(3, sevenTuple.Item3); Assert.Equal(4, sevenTuple.Item4); Assert.Equal(5, sevenTuple.Item5); Assert.Equal(6, sevenTuple.Item6); Assert.Equal(7, sevenTuple.Item7); //8个及以上元组的值元组:元组嵌套 var overSevenTuple = valueTupleStudy.CreateValueTuple>(1, 2, 3, 4, 5, 6, 7, new ValueTuple(8, 9, 10)); Assert.Equal(1, overSevenTuple.Item1); Assert.Equal(2, overSevenTuple.Item2); Assert.Equal(3, overSevenTuple.Item3); Assert.Equal(4, overSevenTuple.Item4); Assert.Equal(5, overSevenTuple.Item5); Assert.Equal(6, overSevenTuple.Item6); Assert.Equal(7, overSevenTuple.Item7); //元组嵌套 Assert.Equal(8, overSevenTuple.Item8); Assert.Equal(9, overSevenTuple.Item9); Assert.Equal(10, overSevenTuple.Item10); //16个以上,要审视程序设计,是否确实需要使用ValueTuple,最好改成设计成类 } } }