1 importScripts('worker-test-harness.js');
3 promise_test(function(t) {
4 var cache_name = 'cache-storage/foo';
5 return self.caches.delete(cache_name)
7 return self.caches.create(cache_name);
9 .then(function(cache) {
10 assert_true(cache instanceof Cache,
11 'CacheStorage.create should return a Cache.');
13 }, 'CacheStorage.create');
15 promise_test(function(t) {
16 // Note that this test may collide with other tests running in the same
17 // origin that also uses an empty cache name.
19 return self.caches.delete(cache_name)
21 return self.caches.create(cache_name);
23 .then(function(cache) {
24 assert_true(cache instanceof Cache,
25 'CacheStorage.create should accept an empty name.');
27 }, 'CacheStorage.create with an empty name');
29 promise_test(function(t) {
30 return assert_promise_rejects(
33 'CacheStorage.create should throw TypeError if called with no arguments.');
34 }, 'CacheStorage.create with no arguments');
36 promise_test(function(t) {
37 var cache_name = 'cache-storage/there can be only one';
38 return self.caches.delete(cache_name)
40 return self.caches.create(cache_name);
43 return assert_promise_rejects(
44 self.caches.create(cache_name),
46 'CacheStorage.create should throw InvalidAccessError if called ' +
47 'with existing cache name.');
49 }, 'CacheStorage.create with an existing cache name');
51 promise_test(function(t) {
54 name: 'cache-storage/lowercase',
57 'cache-storage/Lowercase',
58 ' cache-storage/lowercase',
59 'cache-storage/lowercase '
63 name: 'cache-storage/has a space',
70 name: 'cache-storage/has\000_in_the_name',
74 'cache-storage/has_in_the_name'
78 return Promise.all(test_cases.map(function(testcase) {
79 var cache_name = testcase.name;
80 return self.caches.delete(cache_name)
82 return self.caches.create(cache_name);
85 return self.caches.has(cache_name);
87 .then(function(result) {
89 'CacheStorage.has should return true for existing ' +
94 testcase.should_not_match.map(function(cache_name) {
95 return self.caches.has(cache_name)
96 .then(function(result) {
98 'CacheStorage.has should only perform ' +
99 'exact matches on cache names.');
104 return self.caches.delete(cache_name);
107 }, 'CacheStorage.has with existing cache');
109 promise_test(function(t) {
110 return self.caches.has('cheezburger')
111 .then(function(result) {
113 'CacheStorage.has should return false for ' +
114 'nonexistent cache.');
116 }, 'CacheStorage.has with nonexistent cache');
118 promise_test(function(t) {
119 var cache_name = 'cache-storage/get';
121 return self.caches.delete(cache_name)
123 return self.caches.create(cache_name);
125 .then(function(result) {
129 return self.caches.get(cache_name);
131 .then(function(result) {
132 assert_equals(result, cache,
133 'CacheStorage.get should return the named Cache ' +
134 'object if it exists.');
137 return self.caches.get(cache_name);
139 .then(function(result) {
140 assert_equals(result, cache,
141 'CacheStorage.get should return the same ' +
142 'instance of an existing Cache object.');
144 }, 'CacheStorage.get with existing cache');
146 promise_test(function(t) {
147 return self.caches.get('cheezburger')
148 .then(function(result) {
149 assert_equals(result, undefined,
150 'CacheStorage.get should return undefined for a ' +
151 'nonexistent cache.');
153 }, 'CacheStorage.get with nonexistent cache');
155 promise_test(function(t) {
156 var cache_name = 'cache-storage/delete';
158 return self.caches.delete(cache_name)
160 return self.caches.create(cache_name);
162 .then(function() { return self.caches.delete(cache_name); })
163 .then(function(result) {
165 'CacheStorage.delete should return true after ' +
166 'deleting an existing cache.');
169 .then(function() { return self.caches.has(cache_name); })
170 .then(function(cache_exists) {
171 assert_false(cache_exists,
172 'CacheStorage.has should return false after ' +
173 'fulfillment of CacheStorage.delete promise.');
175 }, 'CacheStorage.delete with existing cache');
177 promise_test(function(t) {
178 return self.caches.delete('cheezburger')
179 .then(function(result) {
181 'CacheStorage.delete should return false for a ' +
182 'nonexistent cache.');
184 }, 'CacheStorage.delete with nonexistent cache');