コード例 #1
0
    public void AutoSortingEnumerator_Should_NotChange_IfItIsContinueIteratingToTheEnd(params string[] values)
    {
        var testQueue = new FromLastIteratedEnumerable <string>(values);

        testQueue.Iterate().ToArray();

        var result = testQueue.Iterate().ToArray();

        result.Should().BeInAscendingOrder();
        result.Should().BeEquivalentTo(values, config => config.WithStrictOrdering());
    }
コード例 #2
0
    public void AutoSortingEnumerator_Should_SetLastIteratedItemToTheBeginning(int takeCount,
                                                                               params string[] values)
    {
        var testQueue = new FromLastIteratedEnumerable <string>(values);

        testQueue.Iterate().Take(takeCount).ToArray();

        var result = testQueue.Iterate().ToArray();

        result[0].Should().BeEquivalentTo(values[takeCount - 1]);
    }
コード例 #3
0
 private IEnumerable <Thread> CreateTestThreads(
     FromLastIteratedEnumerable <string> autosorter,
     int itemsCount,
     int threadsCount,
     int syclesInThreadCount)
 {
     for (var threadIndex = 0; threadIndex < threadsCount; threadIndex++)
     {
         yield return(new Thread(
                          () =>
         {
             for (var i = 0; i < syclesInThreadCount; i++)
             {
                 autosorter.Iterate().Take(random.Next(1, itemsCount)).ToArray();
             }
         }));
     }
 }
コード例 #4
0
    public void AutoSortingEnumerator_ShouldBe_ThreadSafe()
    {
        const int itemsCount          = 100;
        const int threadsCount        = 100;
        const int syclesInThreadCount = 100;

        var sourceCollection = fixture.CreateMany <string>(itemsCount).ToArray();
        var testQueue        = new FromLastIteratedEnumerable <string>(sourceCollection.ToArray());
        var threads          = CreateTestThreads(testQueue, itemsCount, threadsCount, syclesInThreadCount).ToArray();

        threads.ForEach(thread => thread.Start());

        while (threads.Any(thread => thread.IsAlive))
        {
        }

        var result = testQueue.Iterate().ToArray();

        result.Should().BeEquivalentTo(sourceCollection);
    }