You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
TupleStudy/ValueTupleStudyTest/ValueTupleStudyTest.cs

109 lines
4.1 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
using TupleStudy;
namespace ValueTupleStudyTest
{
/// <summary>
/// ValueTuple 需要.net framework 4.7及以上
/// .net framework 4.7及以下需要Nuget引用包System.ValueTuple 库
/// </summary>
public class ValueTupleStudyTest
{
private ValueTupleStudy valueTupleStudy;
/// <summary>
/// 构造函数
/// </summary>
public ValueTupleStudyTest()
{
valueTupleStudy = new ValueTupleStudy();
}
/// <summary>
/// 使用构造函数创建值元组
/// </summary>
[Fact]
public void CreateValueTuple_Test()
{
//创建包含零个元组的值元组
var zeroTuple = this.valueTupleStudy.CreateValueTuple();
Assert.IsType<ValueTuple>(zeroTuple);
//1个元组的值元组
var oneTuple = valueTupleStudy.CreateValueTuple<int>(1);
Assert.Equal(1, oneTuple.Item1);
Assert.Equal("first", new ValueTuple<string>("first").Item1);
//2个元组的值元组
var twoTuple = valueTupleStudy.CreateValueTuple<int, int>(1, 2);
Assert.Equal(1, twoTuple.Item1);
Assert.Equal(2, twoTuple.Item2);
//3个元组的值元组
var threeTuple = valueTupleStudy.CreateValueTuple<int, int, int>(1, 2, 3);
Assert.Equal(1, threeTuple.Item1);
Assert.Equal(2, threeTuple.Item2);
Assert.Equal(3, threeTuple.Item3);
//4个元组的值元组
var fourTuple = valueTupleStudy.CreateValueTuple<int, int, int, int>(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<int, int, int, int, int>(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<int, int, int, int, int, int>(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<int, int, int, int, int, int, int>(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<int, int, int, int, int, int, int, ValueTuple<int, int, int>>(1, 2, 3, 4, 5, 6, 7, new ValueTuple<int, int, int>(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最好改成设计成类
}
}
}