using System;
using System.Collections.Generic;
using UnityEditor.TestTools.TestRunner.Api;
using UnityEngine.TestTools;

namespace UnityEditor.TestTools.TestRunner
{
    internal class TestListJob
    {
        private CachingTestListProvider m_TestListProvider;
        private TestPlatform m_Platform;
        private Action<ITestAdaptor> m_Callback;
        private IEnumerator<ITestAdaptor> m_ResultEnumerator;
        public TestListJob(CachingTestListProvider testListProvider, TestPlatform platform, Action<ITestAdaptor> callback)
        {
            m_TestListProvider = testListProvider;
            m_Platform = platform;
            m_Callback = callback;
        }

        public void Start()
        {
            m_ResultEnumerator = m_TestListProvider.GetTestListAsync(m_Platform);
            EditorApplication.update += EditorUpdate;
        }

        private void EditorUpdate()
        {
            if (!m_ResultEnumerator.MoveNext())
            {
                m_Callback(m_ResultEnumerator.Current);
                EditorApplication.update -= EditorUpdate;
            }
        }
    }
}