cache.html revision 6da8c70b8b366ef387914ebf8f3c4d44d4cec955
5cd4555ad444fd391002ae32450572054369fd42Rob Austein<html>
5cd4555ad444fd391002ae32450572054369fd42Rob Austein<head>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein<title>Cache Tests</title>
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington</head>
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews<body class="yui-skin-sam">
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington<h1>Cache Tests</h1>
ec5347e2c775f027573ce5648b910361aa926c01Automatic Updater<p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington<script type="text/javascript" src="/build/yui/yui.js"></script>
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington<script type="text/javascript" src="/build/cache/cache-debug.js" id="buildsrc"></script>
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<script type="text/javascript">
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews(function() {
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews YUI({
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews base: "/build/",
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews filter: "debug",
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews useConsole: true,
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington insertBefore: "buildsrc"
f5d30e2864e048a42c4dc1134993ae7efdb5d6c3Mark Andrews }).use("console", "test", "dump", "cache", function(Y) {
b5ad6dfea4cc3e7d1d322ac99f1e5a31096837c4Mark Andrews
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington // Set up the page
1753d3c4d74241a847794f7e7cfd94cc79be6600Evan Hunt var ASSERT = Y.Assert,
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ARRAYASSERT = Y.ArrayAssert,
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington BTNRUN = Y.get("#btnRun");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington BTNRUN.set("disabled", false);
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington Y.on("click", function(){
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington Y.Test.Runner.run();
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington }, BTNRUN);
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington var myConsole = new Y.Console().render();
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington var testClass = new Y.Test.Case({
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington name: "Class Tests",
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington testDefaults: function() {
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein var cache = new Y.Cache();
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein cache.add(1, "a");
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ASSERT.isInstanceOf(Y.Cache, cache, "Expected instance of Y.Cache.");
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ASSERT.areSame(0, cache.get("size"), "Expected default size of 0.");
c1a883f2e04d94e99c433b1f6cfd0c0338f4ed85Mark Andrews ARRAYASSERT.isEmpty(cache.getEntries(), "Expected empty array.");
3398334b3acda24b086957286288ca9852662b12Automatic Updater },
dde8659175c5798267fb0fdefd7576e4efe271b3Automatic Updater
f428e385a4f7a42196b53de8e134909e8c488258Automatic Updater testDestructor: function() {
207cee019eb5cbbe7c905f7c52f7b5d11f8c0305Automatic Updater var cache = new Y.Cache();
99d8f5a70440ee8b63ab1745d713b96dde890546Tinderbox User cache.destroy();
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User ASSERT.isNull(cache.getEntries(), "Expected null array.");
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein }
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein });
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein var testBasic = new Y.Test.Case({
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein name: "Basic Tests",
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein testsize0: function() {
f5d30e2864e048a42c4dc1134993ae7efdb5d6c3Mark Andrews var cache = new Y.Cache();
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ASSERT.areSame(0, cache.get("size"), "Expected size to be 0.");
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein cache.add(1, "a");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ASSERT.areSame(0, cache.getEntries().length, "Expected 0 entries.");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ASSERT.isNull(cache.retrieve(1), "Expected null cached response.");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington },
b272d38cc5d24f64c0647a9afb340c21c4b9aaf7Evan Hunt
b272d38cc5d24f64c0647a9afb340c21c4b9aaf7Evan Hunt testsize2: function() {
b272d38cc5d24f64c0647a9afb340c21c4b9aaf7Evan Hunt var cache = new Y.Cache({size:2});
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt ASSERT.areSame(2, cache.get("size"), "Expected size to be 2.");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.add(1, "a");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ASSERT.areSame(1, cache.getEntries().length, "Expected 1 entry.");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.add(2, "b");
8b78c993cb475cc94e88560941b28c37684789d9Francis Dupont ASSERT.areSame(2, cache.getEntries().length, "Expected 2 entries.");
b0c15bd9792112fb47f6d956e580e4369e92f4e7Mark Andrews cache.add(3, "c");
b843f577bbcd6660fbaa506d9e55b156c689a5a8Evan Hunt ASSERT.areSame(2, cache.getEntries().length, "Expected 2 entries (still).");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington },
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington
b843f577bbcd6660fbaa506d9e55b156c689a5a8Evan Hunt testsize2to1: function() {
c6f4972c745f8903aba6dcca41f17a44c473db66Mark Andrews var cache = new Y.Cache({size:2});
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.add(1, "a");
61bcc232038f0a2cb77ed6269675fdc288f5ec98Evan Hunt cache.add(2, "b");
cc3aafe737334d444781f8a34ffaf459e075bb9aMark Andrews cache.set("size", 1);
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt ASSERT.areSame(1, cache.getEntries().length, "Expected 1 entry.");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington
c6d2578fd67bc1a427d13fd0699b25a187feec8aMark Andrews cache.add(3, "c");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt ASSERT.areSame(1, cache.getEntries().length, "Expected 1 entry (still).");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington },
c6f4972c745f8903aba6dcca41f17a44c473db66Mark Andrews
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington testsize2to0: function() {
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington var cache = new Y.Cache({size:2});
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington cache.add(1, "a");
42782931073786f98d3d0a617351db40066949a4Mukund Sivaraman cache.add(2, "b");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.set("size", 0);
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ARRAYASSERT.isEmpty(cache.getEntries(), "Expected empty array.");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington cache.add(3, "c");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ARRAYASSERT.isEmpty(cache.getEntries(), "Expected empty array (still).");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington },
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington testRetrieve: function() {
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein var cache = new Y.Cache({size:2}),
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein cachedresponse;
561a29af8c54a216e7d30b5b4f6e0d21661654ecMark Andrews cache.add(1, "a");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.add(2, "b");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cachedresponse = cache.retrieve(1).response;
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ASSERT.areSame("a", cachedresponse, "Expected first cached response.");
41eeb37b516d1bac073781b6ec50a39a669987dfEvan Hunt
41eeb37b516d1bac073781b6ec50a39a669987dfEvan Hunt cachedresponse = cache.retrieve(2).response;
41eeb37b516d1bac073781b6ec50a39a669987dfEvan Hunt ASSERT.areSame("b", cachedresponse, "Expected second cached response.");
41eeb37b516d1bac073781b6ec50a39a669987dfEvan Hunt },
41eeb37b516d1bac073781b6ec50a39a669987dfEvan Hunt
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington testFlush: function() {
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington var cache = new Y.Cache({size:2});
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington cache.add(1, "a");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington cache.add(2, "b");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington cache.flush();
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington ASSERT.areSame(0, cache.getEntries().length, "Expected empty cache.");
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington }
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington });
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein var testEntryManagement = new Y.Test.Case({
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt name: "Entry Management Tests",
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt
aaaf8d4f4873d21e55c3ffb4f656203d08339865Mark Andrews testAllowDuplicateEntries: function() {
aaaf8d4f4873d21e55c3ffb4f656203d08339865Mark Andrews var cache = new Y.Cache({size:3});
cc6cddfd94e8f0c58c290317b0853dac30b1b895Evan Hunt cache.add(1, "a");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.add(2, "b");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt cache.add(1, "a");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt ASSERT.areSame(3, cache.getEntries().length, "Expected 3 entries.");
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt },
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt testFreshness: function() {
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt var cache = new Y.Cache({size:3});
cc6cddfd94e8f0c58c290317b0853dac30b1b895Evan Hunt cache.add(1, "a");
cc6cddfd94e8f0c58c290317b0853dac30b1b895Evan Hunt cache.add(2, "b");
cc6cddfd94e8f0c58c290317b0853dac30b1b895Evan Hunt cache.add(3, "c");
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein cache.retrieve(1);
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ASSERT.areSame(3, cache.getEntries().length, "Expected 3 entries.");
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ASSERT.areSame(1, cache.getEntries()[2].request, "Expected entry to be refreshed.");
6098d364b690cb9dabf96e9664c4689c8559bd2eMark Andrews },
6098d364b690cb9dabf96e9664c4689c8559bd2eMark Andrews
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein testPayload: function() {
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein //TODO
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt }
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt });
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington Y.Test.Runner.add(testClass);
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington Y.Test.Runner.add(testBasic);
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington Y.Test.Runner.add(testEntryManagement);
0b062f4990db5cc6db2fe3398926f71b92a67407Brian Wellington Y.Test.Runner.run();
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein });
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein})();
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein</script>
cc6cddfd94e8f0c58c290317b0853dac30b1b895Evan Hunt</body>
b272d38cc5d24f64c0647a9afb340c21c4b9aaf7Evan Hunt</html>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein