package eu.dnetlib.enabling.aas.retrievers.cache;

import static org.junit.Assert.*;

import org.junit.Test;

/**
 * {@link SynchronizedMapProfilesCache} test class.
 * 
 * @author mhorst
 *
 */
public class SynchronizedMapProfilesCacheTest {

	
	@Test
	public void testCleanup() throws Exception {
		int ttlTime = 1;
		SynchronizedMapProfilesCache profilesCache = new SynchronizedMapProfilesCache();
		profilesCache.setProfilesTTLSeconds(ttlTime);
		profilesCache.setProfile("1", "content1");
		profilesCache.setProfile("2", "content2");
		profilesCache.setProfile("5", "content5");
		
		Thread.sleep(ttlTime * 1000 + 1);
		profilesCache.setProfile("3", "content3");
		profilesCache.setProfile("4", "content4");
		profilesCache.setProfile("5", "content5");
		profilesCache.cleanup();
		assertNull(profilesCache.getProfile("1"));
		assertNull(profilesCache.getProfile("2"));
		assertEquals("content3", profilesCache.getProfile("3"));
		assertEquals("content4", profilesCache.getProfile("4"));
		assertEquals("content5", profilesCache.getProfile("5"));
		
		Thread.sleep(ttlTime * 1000 + 1);
		profilesCache.cleanup();
		assertNull(profilesCache.getProfile("3"));
		assertNull(profilesCache.getProfile("4"));
		assertNull(profilesCache.getProfile("5"));
		
	}
}
