// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. // /// /// /// module CorsicaTests { "use strict"; var testData; export class Download { setUp() { var holder = document.createElement('div'); holder.innerHTML = '
'; WinJS.UI.Fragments.clearCache(holder.firstChild); var cloned = document.createElement("div"); WinJS.UI.Fragments.renderCopy(holder.firstChild). then(function (docfrag) { cloned.appendChild(docfrag); }); var ok = cloned.querySelector('.ok'); var cancel = cloned.querySelector('.cancel'); var progress = cloned.querySelector('.progress'); var count = 0; var intervalId; var promise = new WinJS.Promise(function (c, e, p) { ok.addEventListener('click', function () { intervalId = setInterval(function () { count++; progress.innerHTML = count.toString(); LiveUnit.Assert.isTrue(count <= 10, 'Count should never be more than 10.'); p(count); if (count === 10) { progress.innerHTML = 'done!'; clearInterval(intervalId); c(); } }, 16); }, false); }, function () { clearInterval(intervalId); }); cancel.addEventListener('click', function () { promise.cancel(); }, false); testData = { promise: promise, content: holder, progress: progress, ok: ok, cancel: cancel }; } testDownloadProgress(complete) { testData.promise.then(function () { LiveUnit.Assert.areEqual(testData.progress.innerHTML, 'done!'); }, null, function (count) { LiveUnit.Assert.areEqual(testData.progress.innerHTML, count.toString()); }).then(function () { WinJS.UI.Fragments.clearCache(testData.content.firstChild); }).then(null, function (e) { LiveUnit.Assert.fail('There was an unknown failure: ' + e); }).then(complete, complete); testData.ok.click(); } testDownloadProgressCancel(complete) { var iter = 5; testData.promise .then( function () { LiveUnit.Assert.fail('The promise should not have completed.'); }, null, function (count) { if (count === iter) { testData.cancel.click(); } }) .then(null, function (e) { WinJS.UI.Fragments.clearCache(testData.content.firstChild); LiveUnit.Assert.areEqual(testData.progress.innerHTML, iter.toString()); }) .then(null, function (e) { LiveUnit.Assert.fail('There was an unknown failure: ' + e); }) .then(complete, complete); testData.ok.click(); } testDownloadProgressCancelAfterComplete(complete) { var completed = false; testData.promise.then(function () { LiveUnit.Assert.areEqual(testData.progress.innerHTML, 'done!'); complete = true; }, null, function () { if (completed) { LiveUnit.Assert.fail("We shouldn't update after complete!"); } }).then(function () { testData.cancel.click(); }).then(null, function () { LiveUnit.Assert.fail('Promise is completed; should not move to the error state.'); }).then(function () { WinJS.UI.Fragments.clearCache(testData.content.firstChild); }).then(null, function (e) { LiveUnit.Assert.fail('There was an unknown failure: ' + e); }).then(complete, complete); testData.ok.click(); } } } LiveUnit.registerTestClass("CorsicaTests.Download");