using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;

namespace xUnitStudy.WebApi.Test
{
    /// <summary>
    /// 输出窗口的测试选项,显示测试相关信息
    /// </summary>
    public class TestCaseOrdererTest: ITestCaseOrderer
    {
        private readonly IMessageSink diagnosticMessageSink;

        public TestCaseOrdererTest(IMessageSink diagnosticMessageSink)
        {
            this.diagnosticMessageSink = diagnosticMessageSink;
        }

        public IEnumerable<TTestCase> OrderTestCases<TTestCase>(IEnumerable<TTestCase> testCases) where TTestCase : ITestCase
        {
            var result = testCases.ToList();  // Run them in discovery order
            var message = new DiagnosticMessage("Ordered {0} test cases", result.Count);
            diagnosticMessageSink.OnMessage(message);
            return result;
        }
    }
}