public IEnumerator TestStream()
        {
            // Current limitation:
            // There is no way to check whether the loaded audio is truly a streaming audio or not.

            var request  = new AudioRequest(TestConstants.RemoteMp3Url, true);
            var listener = new TaskListener <IWebRequest>();

            request.Request(listener);

            while (!request.IsFinished)
            {
                Debug.Log("Progress: " + listener.Progress);
                yield return(null);
            }

            Assert.IsNotNull(request.Response);

            var clip = request.Response.AudioData;

            Assert.IsNotNull(clip);

            Debug.Log($"Content: {request.Response.ContentLength}, response: {request.Response.BytesLoaded}");
            Assert.LessOrEqual((double)request.Response.BytesLoaded, (double)request.Response.ContentLength);
        }
        private IEnumerator LoadAudio(Action <IAudio> onFinished)
        {
            new GameObject("Listener").AddComponent <AudioListener>();

            Assert.IsNotNull(onFinished);
            var request = new AudioRequest("file://" + Path.Combine(TestConstants.TestAssetPath, "Audio/effect.mp3"));

            request.OnOutput += (audio) => onFinished(new UnityAudio(audio));
            request.Request();
            while (!request.IsFinished)
            {
                yield return(null);
            }
            Assert.IsNotNull(request.Output);
            AudioClip clip = request.Output as AudioClip;

            Assert.IsNotNull(clip);
            Assert.Greater(clip.length, 0f);
        }
        public IEnumerator TestNonStream()
        {
            var request  = new AudioRequest(TestConstants.RemoteMp3Url, false);
            var listener = new TaskListener <IWebRequest>();

            request.Request(listener);

            while (!request.IsFinished)
            {
                Debug.Log("Progress: " + listener.Progress);
                yield return(null);
            }

            Assert.IsNotNull(request.Response);

            var clip = request.Response.AudioData;

            Assert.IsNotNull(clip);

            Debug.Log($"Content: {request.Response.ContentLength}, response: {request.Response.BytesLoaded}");
            Assert.AreEqual(request.Response.ContentLength, request.Response.BytesLoaded);
        }