/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.broadcast.common.diffuser;
import java.io.File;
import java.util.Arrays;
import junit.framework.TestCase;
/**
*/
public class DiffuserManagerTest extends TestCase {
private static final String TEMP_DIR = System.getProperty("java.io.tmpdir");
private DiffuserManager manager;
public void test_defaultDiffuser() throws Exception {
assertEquals("[CFT, NONE]", Arrays.asList(manager.getDiffusersCode()).toString());
Diffuser dif = manager.buildDiffuser("CFT", TEMP_DIR + "/BOBO");
assertNotNull(dif);
assertTrue(dif instanceof CFTDiffuser);
assertEquals(TEMP_DIR + "BOBO", ((CFTDiffuser)dif).getCFTBatchFile().toString());
assertNull(manager.buildDiffuser("NONE", null));
}
public void test_buildDiffuser_error() throws Exception {
try {
manager.buildDiffuser("TOTO", TEMP_DIR + "/BOBO");
fail("TOTO est un type de diffuseur inconnu");
}
catch (IllegalArgumentException ex) {
}
}
public void test_declare_and_build() throws Exception {
manager.declareDiffuser("MOCK", MockDiffuser.class);
assertEquals("[CFT, MOCK, NONE]", Arrays.asList(manager.getDiffusersCode()).toString());
Diffuser dif = manager.buildDiffuser("MOCK", TEMP_DIR + "/BOBO");
assertNotNull(dif);
assertTrue(dif instanceof MockDiffuser);
}
public void test_declare_error() throws Exception {
try {
manager.declareDiffuser("BAD", BadMockDiffuser.class);
fail("La declaration echoue car la classe ne possede pas de constructeur valide");
}
catch (NoSuchMethodException ex) {
}
try {
manager.declareDiffuser("CFT", MockDiffuser.class);
fail("La declaration echoue car le diffuseur est deja defini");
}
catch (IllegalArgumentException ex) {
}
}
@Override
protected void setUp() throws Exception {
manager = new DiffuserManager();
}
public static class BadMockDiffuser implements Diffuser {
public BadMockDiffuser() {
}
public void diffuse(DiffuserContext ctxt, File file) {
}
}
public static class MockDiffuser implements Diffuser {
public MockDiffuser(String arg) {
}
public void diffuse(DiffuserContext ctxt, File file) {
}
}
}