Пример #1
0
    public IEnumerator ReceiveFirstList()
    {
        var done = false;

        Autoya.AssetBundle_DownloadAssetBundleListFromUrlManually(
            abListPath + "main_assets/" + AssetBundlesSettings.PLATFORM_STR + "/1.0.0/main_assets.json",
            status =>
        {
            done = true;
        },
            (code, reason, autoyaStatus) =>
        {
            // do nothing.
        }
            );

        yield return(WaitUntil(
                         () => done,
                         () => { throw new TimeoutException("faild to get assetBundleList."); }
                         ));

        // リスト1.0.0が保持されている。
        True(Autoya.Debug_AssetBundle_FeatureState() == Autoya.AssetBundlesFeatureState.Ready);
        True(Autoya.AssetBundle_AssetBundleLists()[0].version == "1.0.0");
    }
Пример #2
0
    public IEnumerator ReceiveUpdatedListThenListWillBeUpdatedThenRestore()
    {
        var defaultDesc = Autoya.Manifest_LoadRuntimeManifest().ToString();

        yield return(ReceiveUpdatedListThenListWillBeUpdated());

        // list is updated. RuntieManifest too.
        var updatedDesc = Autoya.Manifest_LoadRuntimeManifest().ToString();

        True(defaultDesc != updatedDesc, "defaultDesc:" + defaultDesc + "\nupdatedDesc:" + updatedDesc);

        {
            var done = false;
            Autoya.AssetBundle_FactoryReset(
                () =>
            {
                done = true;
            },
                (error, reason) =>
            {
                Fail("err:" + error + " reason:" + reason);
            }
                );
            yield return(WaitUntil(
                             () => done,
                             () => { throw new TimeoutException("timeout."); }
                             ));
        }

        var resettedDesc = Autoya.Manifest_LoadRuntimeManifest().ToString();

        True(resettedDesc == defaultDesc);

        {
            var done = false;
            Autoya.AssetBundle_DownloadAssetBundleListFromUrlManually(
                abListPath + "main_assets/" + AssetBundlesSettings.PLATFORM_STR + "/1.0.0/main_assets.json",
                status =>
            {
                done = true;
            },
                (code, reason, autoyaStatus) =>
            {
                // do nothing.
            }
                );

            yield return(WaitUntil(
                             () => done,
                             () => { throw new TimeoutException("faild to get assetBundleList."); }
                             ));
        }
    }
Пример #3
0
    public IEnumerator ReceiveUpdatedListThenIgnoreAndIgnoredListIsCached()
    {
        var done = false;
        Autoya.AssetBundle_DownloadAssetBundleListFromUrlManually(
            abListPath + "main_assets/" + AssetBundlesSettings.PLATFORM_STR + "/1.0.0/main_assets.json",
            status =>
            {
                done = true;
            },
            (code, reason, autoyaStatus) =>
            {
                // do nothing.
            }
        );

        yield return WaitUntil(
            () => done,
            () => { throw new TimeoutException("faild to get assetBundleList."); }
        );

        // リスト1.0.0が保持されている。
        // 通信のレスポンスヘッダーに特定の値が含まれていることで、listの更新リクエストを送り出す機構を着火する。


        // 新しいリストの取得判断の関数をセット(レスポンスを捕まえられるはず)
        Autoya.Debug_SetOverridePoint_ShouldRequestNewAssetBundleList(
            (identity, newVersion) =>
            {
                True(newVersion == "1.0.1");
                return RequestYes(identity, newVersion);
            }
        );

        // リストの更新判断の関数をセット、ここでは更新を無視する。
        // 無視されたリストはpostponedなリストとしてメモリ上に保持される。これによって無駄な取得リクエストを省く。
        var listWillBeIgnored = false;
        Autoya.Debug_SetOverridePoint_ShouldUpdateToNewAssetBundleList(
            (condition, proceed, cancel) =>
            {
                listWillBeIgnored = true;
                cancel();
            }
        );


        Autoya.Http_Get(
            "https://httpbin.org/response-headers?" + resversionDesc + "=main_assets:1.0.1",
            (conId, data) =>
            {
                // pass.
            },
            (conId, code, reason, status) =>
            {
                Fail();
            }
        );

        yield return WaitUntil(
            () => listWillBeIgnored,
            () => { throw new TimeoutException("too late."); }
        );

        // list is not updated yet.
        True(Autoya.AssetBundle_AssetBundleLists()[0].version == "1.0.0");

        True(Autoya.Debug_AssetBundle_FeatureState() == Autoya.AssetBundlesFeatureState.Ready);

        // set to the new list to be updated.
        var listWillBeUpdated = false;
        Autoya.Debug_SetOverridePoint_ShouldUpdateToNewAssetBundleList(
            (condition, proceed, cancel) =>
            {
                listWillBeUpdated = true;
                proceed();
            }
        );

        // get list again.
        Autoya.Http_Get(
            "https://httpbin.org/response-headers?" + resversionDesc + "=main_assets:1.0.1",
            (conId, data) =>
            {
                // pass.
            },
            (conId, code, reason, status) =>
            {
                Fail();
            }
        );

        yield return WaitUntil(
            () => listWillBeUpdated,
            () => { throw new TimeoutException("too late."); }
        );

        True(Autoya.AssetBundle_AssetBundleLists()[0].version == "1.0.1");
    }
Пример #4
0
    public IEnumerator ReceiveUpdatedListThenOnAssetBundleListUpdatedFired()
    {
        var done = false;
        Autoya.AssetBundle_DownloadAssetBundleListFromUrlManually(
            abListPath + "main_assets/" + AssetBundlesSettings.PLATFORM_STR + "/1.0.0/main_assets.json",
            status =>
            {
                done = true;
            },
            (code, reason, autoyaStatus) =>
            {
                // do nothing.
            }
        );

        yield return WaitUntil(
            () => done,
            () => { throw new TimeoutException("faild to get assetBundleList."); }
        );

        // リスト1.0.0が保持されている。
        // 通信のレスポンスヘッダーに特定の値が含まれていることで、listの更新リクエストを送り出す機構を着火する。


        // 新しいリストの取得判断の関数をセット(レスポンスを捕まえられるはず)
        Autoya.Debug_SetOverridePoint_ShouldRequestNewAssetBundleList(
            (identity, newVersion) =>
            {
                True(newVersion == "1.0.1");
                return RequestYes(identity, newVersion);
            }
        );

        // リストの更新判断の関数をセット
        var isListUpdated = false;
        Autoya.Debug_SetOverridePoint_ShouldUpdateToNewAssetBundleList(
            (condition, proceed, cancel) =>
            {
                proceed();
            }
        );

        Autoya.Debug_SetOnOverridePoint_OnAssetBundleListUpdated(
            (newVersion, ready) =>
            {
                ready();
                isListUpdated = true;
            }
        );


        Autoya.Http_Get(
            "https://httpbin.org/response-headers?" + resversionDesc + "=main_assets:1.0.1",
            (conId, data) =>
            {
                // pass.
            },
            (conId, code, reason, status) =>
            {
                Fail();
            }
        );

        yield return WaitUntil(
            () => isListUpdated,
            () => { throw new TimeoutException("too late."); }
        );

        // list is updated.
        True(Autoya.AssetBundle_AssetBundleLists()[0].version == "1.0.1");

        True(Autoya.Debug_AssetBundle_FeatureState() == Autoya.AssetBundlesFeatureState.Ready);
    }
Пример #5
0
    public IEnumerator ReceiveListUpdated()
    {
        var done = false;
        Autoya.AssetBundle_DownloadAssetBundleListFromUrlManually(
            abListPath + "main_assets/" + AssetBundlesSettings.PLATFORM_STR + "/1.0.0/main_assets.json",
            status =>
            {
                done = true;
            },
            (code, reason, autoyaStatus) =>
            {
                // do nothing.
                Fail("code:" + code + " reason:" + reason);
            }
        );


        yield return WaitUntil(
            () => done,
            () => { throw new TimeoutException("faild to get assetBundleList."); }
        );

        // リスト1.0.0が保持されている。
        // 通信のレスポンスヘッダーに特定の値が含まれていることで、listの更新リクエストを送り出す機構を着火する。

        // 新しいリストの取得判断の関数をセット(レスポンスを捕まえられるはず)
        var listWillBeDownloaded = false;
        Autoya.Debug_SetOverridePoint_ShouldRequestNewAssetBundleList(
            (identity, newVersion) =>
            {
                listWillBeDownloaded = true;
                True(newVersion == "1.0.1");
                return RequestYes(identity, newVersion);
            }
        );

        // リストの更新判断の関数をセット
        var listWillBeUpdated = false;
        Autoya.Debug_SetOverridePoint_ShouldUpdateToNewAssetBundleList(
            (condition, proceed, cancel) =>
            {
                listWillBeUpdated = true;
                proceed();
            }
        );

        // この通信でresponseHeaderを指定してリストの更新機能を着火する。
        Autoya.Http_Get(
            "https://httpbin.org/response-headers?" + resversionDesc + "=main_assets:1.0.1",
            (conId, data) =>
            {
                // pass.
            },
            (conId, code, reason, status) =>
            {
                Fail();
            }
        );




        yield return WaitUntil(
            () => listWillBeDownloaded,
            () => { throw new TimeoutException("too late."); }
        );

        yield return WaitUntil(
            () => listWillBeUpdated,
            () => { throw new TimeoutException("too late."); }
        );
    }