Index: ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_set_unittest.js |
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_set_unittest.js b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_set_unittest.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9f3f37f9b318ff013b430987301703070859807d |
--- /dev/null |
+++ b/ui/file_manager/file_manager/foreground/js/metadata/metadata_cache_set_unittest.js |
@@ -0,0 +1,83 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+var entryA = { |
+ toURL: function() { return "filesystem://A"; } |
+}; |
+ |
+var entryB = { |
+ toURL: function() { return "filesystem://B"; } |
+}; |
+ |
+function testMetadataCacheSetBasic() { |
+ var set = new MetadataCacheSet(new MetadataCacheSetStorageForObject({})); |
+ var loadRequested = set.startRequests(1, [entryA, entryB], ['property']); |
+ assertEquals(2, loadRequested.length); |
+ assertEquals(entryA, loadRequested[0].entry); |
+ assertEquals(1, loadRequested[0].names.length); |
+ assertEquals('property', loadRequested[0].names[0]); |
+ assertEquals(entryB, loadRequested[1].entry); |
+ assertEquals(1, loadRequested[1].names.length); |
+ assertEquals('property', loadRequested[1].names[0]); |
+ |
+ assertTrue(set.storeProperties( |
+ 1, [entryA, entryB], [{property: 'valueA'}, {property: 'valueB'}])); |
+ |
+ var results = set.get([entryA, entryB], ['property']); |
+ assertEquals(2, results.length); |
+ assertEquals('valueA', results[0].property); |
+ assertEquals('valueB', results[1].property); |
+} |
+ |
+function testMetadataCacheSetStorePartial() { |
+ var set = new MetadataCacheSet(new MetadataCacheSetStorageForObject({})); |
+ set.startRequests(1, [entryA, entryB], ['property']); |
+ |
+ assertTrue(set.storeProperties( |
+ 1, [entryA], [{property: 'valueA'}])); |
+ var results = set.get([entryA, entryB], ['property']); |
+ assertEquals(2, results.length); |
+ assertEquals('valueA', results[0].property); |
+ assertEquals(null, results[1].property); |
+ |
+ assertTrue(set.storeProperties( |
+ 1, [entryB], [{property: 'valueB'}])); |
+ var results = set.get([entryA, entryB], ['property']); |
+ assertEquals(2, results.length); |
+ assertEquals('valueA', results[0].property); |
+ assertEquals('valueB', results[1].property); |
+} |
+ |
+function testMetadataCacheSetCachePartial() { |
+ var set = new MetadataCacheSet(new MetadataCacheSetStorageForObject({})); |
+ set.startRequests(1, [entryA], ['property']); |
+ set.storeProperties(1, [entryA], [{property: 'valueA'}]); |
+ |
+ // entryA has already been cached. |
+ var loadRequested = set.startRequests(2, [entryA, entryB], ['property']); |
+ assertEquals(1, loadRequested.length); |
+ assertEquals(entryB, loadRequested[0].entry); |
+ assertEquals(1, loadRequested[0].names.length); |
+ assertEquals('property', loadRequested[0].names[0]); |
+} |
+ |
+function testMetadataCacheSetInvalidatePartial() { |
+ var set = new MetadataCacheSet(new MetadataCacheSetStorageForObject({})); |
+ set.startRequests(1, [entryA, entryB], ['property']); |
+ set.invalidate(2, [entryA]); |
+ |
+ assertTrue(set.storeProperties( |
+ 1, [entryA, entryB], [{property: 'valueA'}, {property: 'valueB'}])); |
+ |
+ var results = set.get([entryA, entryB], ['property']); |
+ assertEquals(2, results.length); |
+ assertEquals(null, results[0].property); |
+ assertEquals('valueB', results[1].property); |
+ |
+ var loadRequested = set.startRequests(3, [entryA, entryB], ['property']); |
+ assertEquals(1, loadRequested.length); |
+ assertEquals(entryA, loadRequested[0].entry); |
+ assertEquals(1, loadRequested[0].names.length); |
+ assertEquals('property', loadRequested[0].names[0]); |
+} |