/*
* Copyright (C) 2010.
* All rights reserved.
*/
package ro.isdc.wro.cache;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import org.junit.Test;
import ro.isdc.wro.model.resource.ResourceType;
/**
* {@link CacheKey} test class
*
* @author Alex Objelean
*/
public class TestCacheKey {
@Test
public void testEquals() {
final CacheKey key1 = new CacheKey("g1", ResourceType.JS, true);
final CacheKey key2 = new CacheKey("g1", ResourceType.JS, true);
assertEquals(key1, key2);
}
@Test
public void testEquals2() {
final CacheKey key1 = new CacheKey("g1", ResourceType.JS, false);
final CacheKey key2 = new CacheKey("g1", ResourceType.JS, true);
assertFalse(key1.equals(key2));
}
private CacheKey createValidCacheKey() {
return new CacheKey("g1", ResourceType.JS, false);
}
@Test
public void addingNullAttributeKeyShouldHaveNoEffect() {
final CacheKey key = createValidCacheKey().addAttribute(null, "");
assertEquals(key, createValidCacheKey());
}
@Test
public void addingNullAttributeValueShouldHaveNoEffect() {
final CacheKey key = createValidCacheKey().addAttribute("key1", null);
assertEquals(key, createValidCacheKey());
}
@Test
public void shouldBeSameWhenContainingIdenticalAttributes() {
final CacheKey key1 = createValidCacheKey().addAttribute("k1", "v1");
final CacheKey key2 = createValidCacheKey().addAttribute("k1", "v1");
assertEquals(key1, key2);
assertEquals(key1.hashCode(), key2.hashCode());
}
@Test
public void shouldDifferWhenContainingDifferentAttributes() {
final CacheKey key1 = createValidCacheKey().addAttribute("k1", "v1").addAttribute("k2", "v2");
final CacheKey key2 = createValidCacheKey().addAttribute("k1", "v1");
assertFalse(key1.equals(key2));
assertFalse(key1.hashCode() == key2.hashCode());
}
}