aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/crypt/blobhasher_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/crypt/blobhasher_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/crypt/blobhasher_test.html236
1 files changed, 0 insertions, 236 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/crypt/blobhasher_test.html b/contexts/data/lib/closure-library/closure/goog/crypt/blobhasher_test.html
deleted file mode 100644
index 06393cc..0000000
--- a/contexts/data/lib/closure-library/closure/goog/crypt/blobhasher_test.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!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>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>Closure Unit Tests - goog.crypt.BlobHasher</title>
-<script src="../base.js"></script>
-<script>
- goog.require('goog.crypt');
- goog.require('goog.crypt.BlobHasher');
- goog.require('goog.crypt.Md5');
- goog.require('goog.testing.jsunit');
- goog.require('goog.testing.PropertyReplacer');
-</script>
-</head>
-<body>
-<script>
-
-// Mock out the Blob using a string.
-BlobMock = function(string) {
- this.data = string;
- this.size = this.data.length;
-};
-
-BlobMock.prototype.slice = function(start, length) {
- return new BlobMock(this.data.substr(start, length));
-};
-
-
-// Mock out the FileReader to have control over the flow.
-FileReaderMock = function() {
- this.array_ = [];
- this.result = null;
- this.readyState = this.EMPTY;
-
- this.onload = null;
- this.onabort = null;
- this.onerror = null;
-};
-
-FileReaderMock.prototype.EMPTY = 0;
-FileReaderMock.prototype.LOADING = 1;
-FileReaderMock.prototype.DONE = 2;
-
-FileReaderMock.prototype.mockLoad = function() {
- this.readyState = this.DONE;
- this.result = this.array_;
- if (this.onload) {
- this.onload.call();
- }
-}
-
-FileReaderMock.prototype.abort = function() {
- this.readyState = this.DONE;
- if (this.onabort) {
- this.onabort.call();
- }
-}
-
-FileReaderMock.prototype.mockError = function() {
- this.readyState = this.DONE;
- if (this.onerror) {
- this.onerror.call();
- }
-}
-
-FileReaderMock.prototype.readAsArrayBuffer = function(blobMock) {
- this.readyState = this.LOADING;
- this.array_ = [];
- for (var i = 0; i < blobMock.size; ++i) {
- this.array_[i] = blobMock.data.charCodeAt(i);
- }
-};
-
-var stubs = new goog.testing.PropertyReplacer();
-function setUp() {
- stubs.set(goog.global, 'FileReader', FileReaderMock);
-}
-
-function tearDown() {
- stubs.reset();
-}
-
-function testBasicOperations() {
- if (!window.Blob) {
- return;
- }
-
- // Test hashing with one chunk.
- var hashFn = new goog.crypt.Md5();
- var blobHasher = new goog.crypt.BlobHasher(hashFn);
- var blob = new BlobMock("The quick brown fox jumps over the lazy dog");
- blobHasher.hash(blob);
- blobHasher.fileReader_.mockLoad();
- assertEquals('9e107d9d372bb6826bd81d3542a419d6',
- goog.crypt.byteArrayToHex(blobHasher.getHash()));
-
- // Test hashing with multiple chunks.
- blobHasher = new goog.crypt.BlobHasher(hashFn, 7);
- blobHasher.hash(blob);
- while (blobHasher.fileReader_ && !blobHasher.fileReader_.result) {
- blobHasher.fileReader_.mockLoad();
- }
- assertEquals('9e107d9d372bb6826bd81d3542a419d6',
- goog.crypt.byteArrayToHex(blobHasher.getHash()));
-
- // Test hashing with no chunks.
- blob = new BlobMock("");
- blobHasher.hash(blob);
- while (blobHasher.fileReader_ && !blobHasher.fileReader_.result) {
- blobHasher.fileReader_.mockLoad();
- }
- assertEquals('d41d8cd98f00b204e9800998ecf8427e',
- goog.crypt.byteArrayToHex(blobHasher.getHash()));
-
-}
-
-function testNormalFlow() {
- if (!window.Blob) {
- return;
- }
-
- // Test the flow with one chunk.
- var hashFn = new goog.crypt.Md5();
- var blobHasher = new goog.crypt.BlobHasher(hashFn, 13);
- var blob = new BlobMock("short");
- var startedEvents = 0;
- var progressEvents = 0;
- var completeEvents = 0;
- goog.events.listen(blobHasher, goog.crypt.BlobHasher.EventType.STARTED,
- function() { ++startedEvents; });
- goog.events.listen(blobHasher, goog.crypt.BlobHasher.EventType.PROGRESS,
- function() { ++progressEvents; });
- goog.events.listen(blobHasher, goog.crypt.BlobHasher.EventType.COMPLETE,
- function() { ++completeEvents; });
- blobHasher.hash(blob);
- assertEquals(1, startedEvents);
- assertEquals(0, progressEvents);
- assertEquals(0, completeEvents);
- blobHasher.fileReader_.mockLoad();
- assertEquals(1, startedEvents);
- assertEquals(1, progressEvents);
- assertEquals(1, completeEvents);
-
- // Test the flow with multiple chunks.
- blob = new BlobMock("The quick brown fox jumps over the lazy dog");
- startedEvents = 0;
- progressEvents = 0;
- completeEvents = 0;
- var progressLoops = 0;
- blobHasher.hash(blob);
- assertEquals(1, startedEvents);
- assertEquals(0, progressEvents);
- assertEquals(0, completeEvents);
- while (blobHasher.fileReader_ && !blobHasher.fileReader_.result) {
- assertEquals(0, completeEvents);
- blobHasher.fileReader_.mockLoad();
- assertEquals(++progressLoops, progressEvents);
- }
- assertEquals(1, startedEvents);
- assertEquals(progressLoops, progressEvents);
- assertEquals(1, completeEvents);
-
-}
-
-function testAbortsAndErrors() {
- if (!window.Blob) {
- return;
- }
-
- var hashFn = new goog.crypt.Md5();
- var blobHasher = new goog.crypt.BlobHasher(hashFn, 13);
- var blob = new BlobMock("The quick brown fox jumps over the lazy dog");
- var abortEvents = 0;
- var errorEvents = 0;
- var completeEvents = 0;
- goog.events.listen(blobHasher, goog.crypt.BlobHasher.EventType.ABORT,
- function() { ++abortEvents; });
- goog.events.listen(blobHasher, goog.crypt.BlobHasher.EventType.ERROR,
- function() { ++errorEvents; });
- goog.events.listen(blobHasher, goog.crypt.BlobHasher.EventType.COMPLETE,
- function() { ++completeEvents; });
-
- // Immediate abort.
- blobHasher.hash(blob);
- assertEquals(0, abortEvents);
- assertEquals(0, errorEvents);
- assertEquals(0, completeEvents);
- blobHasher.abort();
- blobHasher.abort();
- assertEquals(1, abortEvents);
- assertEquals(0, errorEvents);
- assertEquals(0, completeEvents);
- abortEvents = 0;
-
- // Delayed abort.
- blobHasher.hash(blob);
- blobHasher.fileReader_.mockLoad();
- assertEquals(0, abortEvents);
- assertEquals(0, errorEvents);
- assertEquals(0, completeEvents);
- blobHasher.abort();
- blobHasher.abort();
- assertEquals(1, abortEvents);
- assertEquals(0, errorEvents);
- assertEquals(0, completeEvents);
- abortEvents = 0;
-
- // Immediate error.
- blobHasher.hash(blob);
- blobHasher.fileReader_.mockError();
- assertEquals(0, abortEvents);
- assertEquals(1, errorEvents);
- assertEquals(0, completeEvents);
- errorEvents = 0;
-
- // Delayed error.
- blobHasher.hash(blob);
- blobHasher.fileReader_.mockLoad();
- blobHasher.fileReader_.mockError();
- assertEquals(0, abortEvents);
- assertEquals(1, errorEvents);
- assertEquals(0, completeEvents);
- abortEvents = 0;
-
-}
-
-</script>
-</body>
-</html>