1 importScripts('worker-testharness.js');
2 importScripts('../../resources/testharness-helpers.js');
4 promise_test(function(t) {
5 var cache_name = 'cache-storage/foo';
6 return self.caches.delete(cache_name)
8 return self.caches.open(cache_name);
10 .then(function(cache) {
11 assert_true(cache instanceof Cache,
12 'CacheStorage.open should return a Cache.');
14 }, 'CacheStorage.open');
16 promise_test(function(t) {
17 // Note that this test may collide with other tests running in the same
18 // origin that also uses an empty cache name.
20 return self.caches.delete(cache_name)
22 return self.caches.open(cache_name);
24 .then(function(cache) {
25 assert_true(cache instanceof Cache,
26 'CacheStorage.open should accept an empty name.');
28 }, 'CacheStorage.open with an empty name');
30 promise_test(function(t) {
31 return assert_promise_rejects(
34 'CacheStorage.open should throw TypeError if called with no arguments.');
35 }, 'CacheStorage.open with no arguments');
37 promise_test(function(t) {
40 name: 'cache-storage/lowercase',
43 'cache-storage/Lowercase',
44 ' cache-storage/lowercase',
45 'cache-storage/lowercase '
49 name: 'cache-storage/has a space',
56 name: 'cache-storage/has\000_in_the_name',
60 'cache-storage/has_in_the_name'
64 return Promise.all(test_cases.map(function(testcase) {
65 var cache_name = testcase.name;
66 return self.caches.delete(cache_name)
68 return self.caches.open(cache_name);
71 return self.caches.has(cache_name);
73 .then(function(result) {
75 'CacheStorage.has should return true for existing ' +
80 testcase.should_not_match.map(function(cache_name) {
81 return self.caches.has(cache_name)
82 .then(function(result) {
84 'CacheStorage.has should only perform ' +
85 'exact matches on cache names.');
90 return self.caches.delete(cache_name);
93 }, 'CacheStorage.has with existing cache');
95 promise_test(function(t) {
96 return self.caches.has('cheezburger')
97 .then(function(result) {
99 'CacheStorage.has should return false for ' +
100 'nonexistent cache.');
102 }, 'CacheStorage.has with nonexistent cache');
104 promise_test(function(t) {
105 var cache_name = 'cache-storage/open';
107 return self.caches.delete(cache_name)
109 return self.caches.open(cache_name);
111 .then(function(result) {
115 return self.caches.open(cache_name);
117 .then(function(result) {
118 assert_equals(result, cache,
119 'CacheStorage.open should return the named Cache ' +
120 'object if it exists.');
123 return self.caches.open(cache_name);
125 .then(function(result) {
126 assert_equals(result, cache,
127 'CacheStorage.open should return the same ' +
128 'instance of an existing Cache object.');
130 }, 'CacheStorage.open with existing cache');
132 promise_test(function(t) {
133 var cache_name = 'cache-storage/delete';
135 return self.caches.delete(cache_name)
137 return self.caches.open(cache_name);
139 .then(function() { return self.caches.delete(cache_name); })
140 .then(function(result) {
142 'CacheStorage.delete should return true after ' +
143 'deleting an existing cache.');
146 .then(function() { return self.caches.has(cache_name); })
147 .then(function(cache_exists) {
148 assert_false(cache_exists,
149 'CacheStorage.has should return false after ' +
150 'fulfillment of CacheStorage.delete promise.');
152 }, 'CacheStorage.delete with existing cache');
154 promise_test(function(t) {
155 return self.caches.delete('cheezburger')
156 .then(function(result) {
158 'CacheStorage.delete should return false for a ' +
159 'nonexistent cache.');
161 }, 'CacheStorage.delete with nonexistent cache');