public IEnumerator ThreadNameEvents_PresentInTheCapture()
    {
        var filename = Path.Combine(Application.persistentDataPath, "testfile.json");

        TraceProfiler.BeginCapture(filename);
        yield return(new WaitForSeconds(0.1f));

        TraceProfiler.EndCapture();

        var parser       = new EventParser(filename);
        var threadEvents = parser.FindWithName("thread_name");

        var mainThreadDetected = false;

        foreach (var e in threadEvents)
        {
            Assert.IsNull(e.cat);
            Assert.AreEqual("thread_name", e.name);
            Assert.AreEqual("M", e.ph);
            Assert.IsNotNull(e.args);
            Assert.IsNotNull(e.args.name);
            if (e.args.name.Contains("Main Thread"))
            {
                mainThreadDetected = true;
            }
        }
        Assert.IsTrue(mainThreadDetected);

        File.Delete(filename);
    }
    public IEnumerator Profiler_AsyncEventsCapturePerformance()
    {
        string testFileName = "testfile.json";

        TraceProfiler.BeginCapture(testFileName);
        var e = new TraceEventProfiler.AsyncEvent("MyAsyncEvent");

        e.Begin();
        yield return(new WaitForSeconds(0.1f));

        e.End();
        TraceProfiler.EndCapture();

        string              filename    = Path.Combine(Application.persistentDataPath, testFileName);
        EventParser         parser      = new EventParser(filename);
        List <ProfileEvent> asyncEvents = parser.FindWithName("MyAsyncEvent");

        // TODO: Add more tests, but for now make sure that async events work
        Assert.AreEqual("b", asyncEvents[0].ph);
        Assert.AreEqual("e", asyncEvents[1].ph);

        string filePath = Path.Combine(Application.persistentDataPath, testFileName);

        File.Delete(filePath);
    }
    public IEnumerator Profiler_OutputsPerformanceDataFile()
    {
        string testFileName = "testfile.json";

        TraceProfiler.BeginCapture(testFileName);
        yield return(new WaitForSeconds(0.1f));

        TraceProfiler.EndCapture();

        string filePath = Path.Combine(Application.persistentDataPath, testFileName);

        Assert.IsTrue(File.Exists(filePath));
        File.Delete(filePath);
    }