blob: 89f496fc534bbaf644604c9aef501fa993ac863b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.internet.cache.internal;
import java.io.File;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Tests for the Cache class.
*/
public class CacheTest extends TestCase
{
private Cache cache;
/**
* Create a tests suite from this test class.
*
* @return A test suite containing this test class.
*/
public static Test suite()
{
return new TestSuite(CacheTest.class);
}
protected void setUp() throws Exception {
super.setUp();
cache = Cache.getInstance();
}
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Test trying to cache a resource that doesn't exist
* on a server that does exist.
*/
public void testGetNonExistantResource()
{
String resource = "http://www.eclipse.org/webtools/nonexistantfile";
String result = cache.getResource(resource);
cache.clear();
assertNull("The result returned for resource " + resource + " is not null.", result);
}
/**
* Test trying to cache a resource that doesn't exist
* because the server doesn't exist.
*/
// public void testGetNonExistantServer()
// {
// String resource = "http://www.eclipse.bad/webtools/nonexistantfile";
// String result = cache.getResource(resource);
// cache.clear();
// assertNull("The result returned for resource " + resource + " is not null.", result);
// }
/**
* Test trying to get a resource specified by null.
*/
public void testGetNullResource()
{
String resource = null;
String result = cache.getResource(resource);
cache.clear();
assertNull("The result returned for resource " + resource + " is not null.", result);
}
/**
* Test trying to cache a resource that does exist.
*/
public void testGetResourceThatExists()
{
String resource = "http://www.eclipse.org/webtools";
String result = cache.getResource(resource);
cache.clear();
assertNotNull("The result returned for resource " + resource + " was null.", result);
assertTrue("The result and resource are the same.", !resource.equals(result));
}
/**
* Test to ensure the result that is returned starts with file:///
*/
public void testResultStartsWithFile()
{
String resource = "http://www.eclipse.org/webtools";
String result = cache.getResource(resource);
cache.clear();
assertTrue("The result does not start with file:///.", result.startsWith("file:///"));
}
/**
* Test to ensure deleting a cache entry deletes it from the cache and
* from the file system.
*/
public void testDeleteCacheEntry()
{
String resource = "http://www.eclipse.org/webtools";
String result = cache.getResource(resource);
assertNotNull("The local cache file is null.", result);
// Remove file:/// from the result.
result = result.substring(8);
assertTrue("The cache file " + result + " does not exist.", new File(result).exists());
cache.deleteEntry(resource);
assertFalse("The cache file was not deleted.", new File(result).exists());
assertTrue("The cache still contains the deleted entry.", cache.getCachedURIs().length == 0);
cache.clear();
}
/**
* Test to ensure deleting a null cache entry simply returns.
*/
public void testDeleteNullCacheEntry()
{
String resource = "http://www.eclipse.org/webtools";
cache.getResource(resource);
cache.deleteEntry(null);
assertFalse("The cache no longer contains the entry after deleting null.", cache.getCachedURIs().length == 0);
cache.clear();
}
/**
* Test to ensure clearing the cache with a single entry deletes the entry
* from the cache and deletes the file from the file system.
*/
public void testClearCacheWithSingleEntry()
{
String resource1 = "http://www.eclipse.org/webtools";
String result1 = cache.getResource(resource1);
assertNotNull("The local cache file is null for resource1.", result1);
// Remove file:/// from the result.
result1 = result1.substring(8);
assertTrue("The cache file " + result1 + " does not exist.", new File(result1).exists());
cache.clear();
assertFalse("The cache file for resource1 was not deleted.", new File(result1).exists());
assertTrue("The cache still contains the deleted entries.", cache.getCachedURIs().length == 0);
}
/**
* Test to ensure clearing the cache with multiple entries deletes the entries
* from the cache and deletes the files from the file system.
*/
public void testClearCacheWithMultipleEntries()
{
String resource1 = "http://www.eclipse.org/webtools";
String resource2 = "http://www.eclipse.org";
String result1 = cache.getResource(resource1);
String result2 = cache.getResource(resource2);
assertNotNull("The local cache file is null for resource1.", result1);
assertNotNull("The local cache file is null for resource2.", result2);
// Remove file:/// from the result.
result1 = result1.substring(8);
result2 = result2.substring(8);
assertTrue("The cache file " + result1 + " does not exist.", new File(result1).exists());
assertTrue("The cache file " + result2 + " does not exist.", new File(result2).exists());
cache.clear();
assertFalse("The cache file for resource1 was not deleted.", new File(result1).exists());
assertFalse("The cache file for resource2 was not deleted.", new File(result2).exists());
assertTrue("The cache still contains the deleted entries.", cache.getCachedURIs().length == 0);
}
/**
* Test to ensure deleting a null cache entry simply returns.
*/
public void testGetInstance()
{
assertNotNull("The cache object is null.", cache);
}
/**
* Test to ensure getCacheEntries returns all of the cache entries and not entries that
* haven't been cached.
*/
public void testGetCacheEntries()
{
String resource1 = "http://www.eclipse.org/webtools";
String resource2 = "http://www.eclipse.org";
String resource3 = "http://www.eclipse.org/webtools/nonexistantfile";
cache.getResource(resource1);
cache.getResource(resource2);
cache.getResource(resource3);
String[] uris = cache.getCachedURIs();
assertTrue("There are not 2 entries in the cache.", uris.length == 2);
for(int i = 0; i < uris.length -1; i++)
{
String uri = uris[i];
if(!(uri.equals(resource1) || uri.equals(resource2) || uri.equals(resource3)))
{
fail("The URI " + uri + " is not equal to any of the resources put in the cache.");
}
}
cache.clear();
}
}