cacheoffline.html revision 303f7fa80c85cc2236cb9138d002e0da34431d5e
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning<script type="text/javascript" src="/build/yui/yui.js"></script>
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning<script type="text/javascript" src="/build/cache/cache-debug.js"></script>
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning<p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning(function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning //filter: "debug",
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning logInclude:{"TestRunner":true},
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning useConsole: true
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning }).use("console", "test", "dump", "cache-offline", function(Y) {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning // Set up the page
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning var ASSERT = Y.Assert,
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning BTNRUN = Y.get("#btnRun");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning BTNRUN.set("disabled", false);
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning Y.on("click", function(e){
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning var myConsole = new Y.Console().render(),
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning tearDown = function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning var testClass = new Y.Test.Case({
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning name: "Class Tests",
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning tearDown : tearDown,
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning testDefaults: function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.isInstanceOf(Y.Cache, this.cache, "Expected instance of Y.Cache.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.areSame(null, this.cache.get("max"), "Expected default max of null.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ARRAYASSERT.isEmpty(this.cache.get("entries"), "Expected empty array.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning testDestructor: function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.isNull(this.cache.get("entries"), "Expected null array.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning var testBasic = new Y.Test.Case({
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning name: "Basic Tests",
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning tearDown : tearDown,
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning testMaxDefault: function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.areSame(null, this.cache.get("max"), "Expected max to be null.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.areSame(1, this.cache.get("size"), "Expected 1 entries.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.isNotNull(this.cache.retrieve(1), "Expected null cached response.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning testMaxConfig: function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.isNull(null, this.cache.get("max"), "Expected max to be null.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.areSame(1, this.cache.get("size"), "Expected 1 entry.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning testMaxSet: function() {
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.isNull(null, this.cache.get("max"), "Expected max to be null.");
0f1702c5201310f0529cd5abb77652e5e9b241b6Yu Xiangning ASSERT.areSame(1, this.cache.get("size"), "Expected 1 entry.");
this.cache.set("max", null);
this.cache.add(4, "d");
this.cache.add(4, "d");
this.cache.add(1, "a");
this.cache.add("b", "c");
var cachedresponse = this.cache.retrieve(1).response;
ASSERT.areSame("a", cachedresponse, "Expected first cached response.");
cachedresponse = this.cache.retrieve("b").response;
ASSERT.areSame("c", cachedresponse, "Expected second cached response.");
this.cache.add("a", "b");
var cachedentry = this.cache.retrieve("c");
ASSERT.areSame(null, cachedentry, "Expected no match.");
this.cache.add(1, "a");
this.cache.add(2, "b");
var testEvents = new Y.Test.Case({
this.cache.on("add", function(e) {
this.resume(function() {
this.cache.add(1, "a");
this.wait();
this.cache.on("flush", function(e) {
this.cache.detach("flush");
this.resume(function() {
this.cache.add(1, "a");
this.wait();
this.cache.on("request", function(e) {
this.resume(function() {
this.cache.add(1, "a");
this.wait();
this.cache.on("retrieve", function(e) {
this.resume(function() {
this.cache.add(1, "a");
this.wait();
this.cache.on("retrieve", function(e) {
this.resume(function() {
ASSERT.fail();
this.cache.add(1, "a");
this.wait(function() {
this.cache.on("add", function(e) {
this.cache.add(1, "a");
this.cache.on("flush", function(e) {
this.cache.add(1, "a");
var testEntryManagement = new Y.Test.Case({
this.cache.add(1, "a");
this.cache.add(2, "b");
this.cache.add(1, "c");
this.cache.add(1, "a");
this.cache.add(2, "b");
this.cache.add(1, "c");
this.cache.add(1, "a");
this.cache.add(2, "b");
this.cache.add(3, "c");
var testBoundaryValues = new Y.Test.Case({
this.cache.add(undefined, "a");
this.cache.add(undefined, "b");
this.cache.add(null, "a");
this.cache.add(null, "b");
this.cache.add(NaN, "a");
this.cache.add(NaN, "b");
this.cache.add("", "a");
this.cache.add("", "b");
var suite = new Y.Test.Suite({name:"CacheOffline Test Suite"});
suite.add(testClass);
suite.add(testBasic);
suite.add(testEvents);
suite.add(testEntryManagement);
suite.add(testBoundaryValues);
Y.Test.Runner.setName("CacheOffline Test Runner");
Y.Test.Runner.add(suite);
if(window.localStorage) {