UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

237 lines (214 loc) 8.24 kB
<!DOCTYPE html> <html> <!-- Copyright 2011 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <!-- --> <head> <title>Closure Unit Tests - goog.testing.fs.FileReader</title> <script type="text/javascript" src="../../base.js"></script> <script type="text/javascript"> goog.require('goog.fs.DirectoryEntry.Behavior'); goog.require('goog.fs.FileReader.EventType'); goog.require('goog.testing.AsyncTestCase'); goog.require('goog.testing.fs.FileReader'); goog.require('goog.testing.fs.FileSystem'); goog.require('goog.testing.fs.Blob'); goog.require('goog.testing.jsunit'); </script> </head> <body> <script type="text/javascript"> var asyncTestCase = goog.testing.AsyncTestCase.createAndInstall(); var file, deferredReader; var hasArrayBuffer = goog.isDef(goog.global.ArrayBuffer); function setUp() { var fs = new goog.testing.fs.FileSystem(); var fileEntry = fs.getRoot().createDirectorySync('foo').createFileSync('bar'); file = fileEntry.fileSync(); file.setDataInternal('test content'); deferredReader = new goog.async.Deferred(); goog.Timer.callOnce( goog.bind(deferredReader.callback, deferredReader, new goog.testing.fs.FileReader())); } function testRead() { deferredReader. addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.INIT)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(readAsText)). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.LOADING)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_START)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_END)). addCallback(goog.partial(checkResult, file.toString())). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.DONE)). addBoth(continueTesting); waitForAsync('testRead'); } function testReadAsArrayBuffer() { if (!hasArrayBuffer) { // Skip if array buffer is not supported return; } deferredReader. addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.INIT)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(readAsArrayBuffer)). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.LOADING)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_START)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_END)). addCallback(goog.partial(checkResult, file.toArrayBuffer())). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.DONE)). addBoth(continueTesting); waitForAsync('testReadAsArrayBuffer'); } function testReadAsDataUrl() { deferredReader. addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.INIT)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(readAsDataUrl)). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.LOADING)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_START)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD)). addCallback(goog.partial(checkResult, undefined)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_END)). addCallback(goog.partial(checkResult, file.toDataUrl())). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.DONE)). addBoth(continueTesting); waitForAsync('testReadAsDataUrl'); } function testAbort() { deferredReader. addCallback(goog.partial(readAsText)). addCallback(function(reader) { reader.abort(); }). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.LOADING)). addCallback(goog.partial(waitForError, goog.fs.Error.ErrorCode.ABORT)). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.LOADING)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.ABORT)). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.LOADING)). addCallback(goog.partial(waitForEvent, goog.fs.FileReader.EventType.LOAD_END)). addCallback(goog.partial(checkReadyState, goog.fs.FileReader.ReadyState.DONE)). addCallback(goog.partial(checkResult, undefined)). addBoth(continueTesting); waitForAsync('testAbort'); } function testAbortBeforeRead() { deferredReader. addCallback(function(reader) { reader.abort(); }). addErrback(function(err) { assertEquals(goog.fs.Error.ErrorCode.INVALID_STATE, err.code); return true; }). addCallback(function(calledErrback) { assertTrue(calledErrback); }). addBoth(continueTesting); waitForAsync('testAbortBeforeRead'); } function testReadDuringRead() { deferredReader. addCallback(goog.partial(readAsText)). addCallback(goog.partial(readAsText)). addErrback(function(err) { assertEquals(goog.fs.Error.ErrorCode.INVALID_STATE, err.code); return true; }). addCallback(assertTrue). addBoth(continueTesting); waitForAsync('testReadDuringRead'); } function continueTesting(result) { asyncTestCase.continueTesting(); if (result instanceof Error) { throw result; } } function waitForAsync(msg) { asyncTestCase.waitForAsync(msg); } function waitForEvent(type, target) { var d = new goog.async.Deferred(); goog.events.listenOnce(target, type, goog.bind(d.callback, d, target)); return d; } function waitForError(type, target) { var d = new goog.async.Deferred(); goog.events.listenOnce( target, goog.fs.FileReader.EventType.ERROR, function(e) { assertEquals(type, target.getError().code); d.callback(target); }); return d; } function readAsText(reader) { reader.readAsText(file); } function readAsArrayBuffer(reader) { reader.readAsArrayBuffer(file); } function readAsDataUrl(reader) { reader.readAsDataUrl(file); } function readAndWait(reader) { readAsText(reader); return waitForEvent(goog.fs.FileSaver.EventType.LOAD_END, reader); } function checkResult(expectedResult, reader) { checkEquals(expectedResult, reader.getResult()); } function checkEquals(a, b) { if (hasArrayBuffer && a instanceof ArrayBuffer && b instanceof ArrayBuffer) { assertEquals(a.byteLength, b.byteLength); var viewA = new Uint8Array(a); var viewB = new Uint8Array(b); for (var i = 0; i < a.byteLength; i++) { assertEquals(viewA[i], viewB[i]); } } else { assertEquals(a, b); } } function checkReadyState(expectedState, reader) { assertEquals(expectedState, reader.getReadyState()); } </script> </body> </html>