You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Zero/Tests/ZeroLevel.UnitTests/PriorityQueueTests.cs

106 lines
3.5 KiB

using Xunit;
using ZeroLevel.Services.Collections;
namespace ZeroLevel.UnitTests
{
public class PriorityQueueTests
{
class TestItem
{
public string Value;
}
[Fact]
public void AllItemsCorrectHandleTest()
{
// Arrange
var q = new ZPriorityQueue<string>(s => new PriorityQueueObjectHandleResult { IsCompleted = true, CanBeSkipped = false });
q.Append("s0", 0);
q.Append("s1", 10);
q.Append("s2", 4);
q.Append("s3", 1);
q.Append("s4", 6);
q.Append("s5", 2);
q.Append("s6", 7);
// Assert
Assert.Equal("s0", q.HandleCurrentItem());
Assert.Equal("s3", q.HandleCurrentItem());
Assert.Equal("s5", q.HandleCurrentItem());
Assert.Equal("s2", q.HandleCurrentItem());
Assert.Equal("s4", q.HandleCurrentItem());
Assert.Equal("s6", q.HandleCurrentItem());
Assert.Equal("s1", q.HandleCurrentItem());
}
[Fact]
public void SkipItemsHandleTest()
{
bool skipped = false;
// Arrange
var q = new ZPriorityQueue<string>(s =>
{
if (s.Equals("s5") && !skipped)
{
skipped = true;
return new PriorityQueueObjectHandleResult { IsCompleted = false, CanBeSkipped = true };
}
return new PriorityQueueObjectHandleResult { IsCompleted = true, CanBeSkipped = false };
});
q.Append("s0", 0);
q.Append("s1", 10);
q.Append("s2", 4);
q.Append("s3", 1);
q.Append("s4", 6);
q.Append("s5", 2);
q.Append("s6", 7);
// Assert
Assert.Equal("s0", q.HandleCurrentItem());
Assert.Equal("s3", q.HandleCurrentItem());
Assert.Equal("s2", q.HandleCurrentItem());
Assert.Equal("s5", q.HandleCurrentItem());
Assert.Equal("s4", q.HandleCurrentItem());
Assert.Equal("s6", q.HandleCurrentItem());
Assert.Equal("s1", q.HandleCurrentItem());
}
[Fact]
public void NoSkipItemsIncorrectHandleTest()
{
bool skipped = false;
// Arrange
var q = new ZPriorityQueue<string>(s =>
{
if (s.Equals("s5") && !skipped)
{
skipped = true;
return new PriorityQueueObjectHandleResult { IsCompleted = false, CanBeSkipped = false };
}
return new PriorityQueueObjectHandleResult { IsCompleted = true, CanBeSkipped = false };
});
q.Append("s0", 0);
q.Append("s1", 10);
q.Append("s2", 4);
q.Append("s3", 1);
q.Append("s4", 6);
q.Append("s5", 2);
q.Append("s6", 7);
// Assert
Assert.Equal("s0", q.HandleCurrentItem());
Assert.Equal("s3", q.HandleCurrentItem());
Assert.Equal(null, q.HandleCurrentItem());
Assert.Equal("s5", q.HandleCurrentItem());
Assert.Equal("s2", q.HandleCurrentItem());
Assert.Equal("s4", q.HandleCurrentItem());
Assert.Equal("s6", q.HandleCurrentItem());
Assert.Equal("s1", q.HandleCurrentItem());
}
}
}

Powered by TurnKey Linux.