mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-04 03:27:14 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
// Kyoo - A portable and vast media library solution.
 | 
						|
// Copyright (c) Kyoo.
 | 
						|
//
 | 
						|
// See AUTHORS.md and LICENSE file in the project root for full license information.
 | 
						|
//
 | 
						|
// Kyoo is free software: you can redistribute it and/or modify
 | 
						|
// it under the terms of the GNU General Public License as published by
 | 
						|
// the Free Software Foundation, either version 3 of the License, or
 | 
						|
// any later version.
 | 
						|
//
 | 
						|
// Kyoo is distributed in the hope that it will be useful,
 | 
						|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
						|
// GNU General Public License for more details.
 | 
						|
//
 | 
						|
// You should have received a copy of the GNU General Public License
 | 
						|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using Kyoo.Utils;
 | 
						|
using Xunit;
 | 
						|
 | 
						|
namespace Kyoo.Tests.Utility
 | 
						|
{
 | 
						|
	public class EnumerableTests
 | 
						|
	{
 | 
						|
		[Fact]
 | 
						|
		public void MapTest()
 | 
						|
		{
 | 
						|
			int[] list = { 1, 2, 3, 4 };
 | 
						|
			Assert.All(list.Map((x, i) => (x, i)), x => Assert.Equal(x.x - 1, x.i));
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list.Map(((Func<int, int, int>)null)!));
 | 
						|
			list = null;
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list!.Map((x, _) => x + 1));
 | 
						|
		}
 | 
						|
 | 
						|
		[Fact]
 | 
						|
		public async Task MapAsyncTest()
 | 
						|
		{
 | 
						|
			int[] list = { 1, 2, 3, 4 };
 | 
						|
			await foreach ((int x, int i) in list.MapAsync((x, i) => Task.FromResult((x, i))))
 | 
						|
			{
 | 
						|
				Assert.Equal(x - 1, i);
 | 
						|
			}
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list.MapAsync(((Func<int, int, Task<int>>)null)!));
 | 
						|
			list = null;
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list!.MapAsync((x, _) => Task.FromResult(x + 1)));
 | 
						|
		}
 | 
						|
 | 
						|
		[Fact]
 | 
						|
		public async Task SelectAsyncTest()
 | 
						|
		{
 | 
						|
			int[] list = { 1, 2, 3, 4 };
 | 
						|
			int i = 2;
 | 
						|
			await foreach (int x in list.SelectAsync(x => Task.FromResult(x + 1)))
 | 
						|
			{
 | 
						|
				Assert.Equal(i++, x);
 | 
						|
			}
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list.SelectAsync(((Func<int, Task<int>>)null)!));
 | 
						|
			list = null;
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list!.SelectAsync(x => Task.FromResult(x + 1)));
 | 
						|
		}
 | 
						|
 | 
						|
		[Fact]
 | 
						|
		public async Task ToListAsyncTest()
 | 
						|
		{
 | 
						|
			int[] expected = { 1, 2, 3, 4 };
 | 
						|
			IAsyncEnumerable<int> list = expected.SelectAsync(Task.FromResult);
 | 
						|
			Assert.Equal(expected, await list.ToListAsync());
 | 
						|
			list = null;
 | 
						|
			await Assert.ThrowsAsync<ArgumentNullException>(() => list!.ToListAsync());
 | 
						|
		}
 | 
						|
 | 
						|
		[Fact]
 | 
						|
		public void IfEmptyTest()
 | 
						|
		{
 | 
						|
			int[] list = { 1, 2, 3, 4 };
 | 
						|
			list = list.IfEmpty(() => KAssert.Fail("Empty action should not be triggered.")).ToArray();
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list.IfEmpty(null!).ToList());
 | 
						|
			list = null;
 | 
						|
			Assert.Throws<ArgumentNullException>(() => list!.IfEmpty(() => { }).ToList());
 | 
						|
			list = Array.Empty<int>();
 | 
						|
			Assert.Throws<ArgumentException>(() => list.IfEmpty(() => throw new ArgumentException()).ToList());
 | 
						|
			Assert.Empty(list.IfEmpty(() => { }));
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |