/*
* This code is distributed under The GNU Lesser General Public License (LGPLv3)
* Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html
*
* Copyright Denis Pavlov 2009
* Web: http://www.genericdtoassembler.org
* SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/
* SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/
*/
package com.inspiresoftware.lib.dto.geda.adapter.repository.impl;
import com.inspiresoftware.lib.dto.geda.adapter.repository.AdaptersRepository;
import com.inspiresoftware.lib.dto.geda.exception.DuplicateValueConverterKeyException;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.*;
/**
* AdapterRepositoryImpl test.
*
* @author Denis Pavlov
* @since 1.0.0
*
*/
public class AdapterRepositoryImplTest {
/**
* Test basic methods for repository.
*/
@Test
public void testConstructor() {
final Object conv1 = new Object();
final Object conv2 = new Object();
final Map<String, Object> convs = new HashMap<String, Object>();
convs.put("key1", conv1);
convs.put("key2", conv2);
final AdaptersRepository repo = new AdaptersRepositoryImpl(convs);
final Map<String, Object> res = repo.getAll();
assertNotSame(convs, res);
assertNotNull(res);
assertEquals(convs.size(), res.size());
assertSame(conv1, res.get("key1"));
assertSame(conv2, res.get("key2"));
assertSame(conv1, repo.getByKey("key1"));
final Map<String, Object> res2 = repo.getByKeysAsMap("key1");
assertNotNull(res2);
assertEquals(1, res2.size());
assertSame(conv1, res2.get("key1"));
}
/**
* Test register methods for repository.
*
* @throws com.inspiresoftware.lib.dto.geda.exception.DuplicateValueConverterKeyException duplicate exception
*/
@Test
public void testRegisterAdapters() throws DuplicateValueConverterKeyException {
final Object conv1 = new Object();
final AdaptersRepository repo = new AdaptersRepositoryImpl();
assertNotNull(repo.getAll());
assertTrue(repo.getAll().isEmpty());
repo.registerAdapter("key1", conv1);
assertNotNull(repo.getAll());
assertEquals(1, repo.getAll().size());
assertSame(conv1, repo.getByKey("key1"));
repo.removeAdapter("key1");
assertNotNull(repo.getAll());
assertTrue(repo.getAll().isEmpty());
}
/**
* Test duplicate keys.
*
* @throws com.inspiresoftware.lib.dto.geda.exception.DuplicateValueConverterKeyException duplicate exception
*/
@Test(expected = DuplicateValueConverterKeyException.class)
public void testRegisterAdaptersFailForDuplicateKey() throws DuplicateValueConverterKeyException {
final Object conv1 = new Object();
final AdaptersRepository repo = new AdaptersRepositoryImpl();
repo.registerAdapter("key1", conv1);
repo.registerAdapter("key1", conv1);
}
/**
* Test duplicate keys.
*/
@Test
public void testRegisterAdaptersForcedDoesNotFailForDuplicateKey() {
final Object conv1 = new Object();
final AdaptersRepository repo = new AdaptersRepositoryImpl();
repo.registerAdapterForced("key1", conv1);
repo.registerAdapterForced("key1", conv1);
}
}