using System.Collections.Generic;
using System.Linq;
using Util.Helpers;
using Xunit;
using Xunit.Abstractions;
namespace Util.Tests.Helpers;
///
/// 随机数操作测试
///
public class RandomTest {
///
/// 输出工具
///
private readonly ITestOutputHelper _testOutputHelper;
///
/// 测试初始化
///
public RandomTest( ITestOutputHelper testOutputHelper ) {
_testOutputHelper = testOutputHelper;
}
///
/// 测试从集合中随机获取值
///
[Fact]
public void TestGetValue() {
var list = new List();
for ( int i = 0; i < 10; i++ ) {
list.Add( i );
}
for ( int i = 0; i < 10; i++ ) {
var a = Random.GetValue( list );
var b = Random.GetValue( list );
if ( a != b )
return;
}
Assert.Fail( "fail" );
}
///
/// 测试从集合中随机获取值列表
///
[Fact]
public void TestGetValues_1() {
var list = Enumerable.Range( 0, 10 );
var result = Random.GetValues( list, 3 );
Assert.Equal( 3, result.Count );
Assert.True( result[0] >= 0 && result[0] < 10 );
Assert.True( result[1] >= 0 && result[1] < 10 );
Assert.True( result[2] >= 0 && result[2] < 10 );
}
///
/// 测试从集合中随机获取值列表 - 获取数量大于集合数量
///
[Fact]
public void TestGetValues_2() {
var list = Enumerable.Range( 0, 3 );
var result = Random.GetValues( list, 10 );
Assert.Equal( 3, result.Count );
Assert.True( result[0] >= 0 && result[0] < 3 );
Assert.True( result[1] >= 0 && result[1] < 3 );
Assert.True( result[2] >= 0 && result[2] < 3 );
}
///
/// 获取随机排序的集合
///
[Fact]
public void TestSort() {
int[] input = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var list = Util.Helpers.Random.Sort( input );
var result = list.Join();
Assert.Equal( 10, list.Distinct().Count() );
Assert.NotEqual( "1,2,3,4,5,6,7,8,9,10", result );
_testOutputHelper.WriteLine( result );
}
}