package water.parser;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.List;
import water.MRTask;
import water.TestUtil;
/**
* Test parser service.
*/
public class ParserServiceTest extends TestUtil {
@BeforeClass
static public void setup() { TestUtil.stall_till_cloudsize(1); }
// A list of REGISTERED core provider names in the expected order based on priorities.
// Warning: The order is fixed in the test to detect any changes in the code!!!
private static final String[] CORE_PROVIDER_NAMES = { "GUESS", "ARFF", "XLS", "SVMLight", "CSV"};
@Test
public void testVerifyCoreProvidersInCaller() {
verifyCoreProviders();
}
@Test
public void testVerifyCoreProvidersPerNode() {
new MRTask() {
@Override
protected void setupLocal() {
verifyCoreProviders();
}
}.doAllNodes();
}
private static void verifyCoreProviders() {
ParserService ps = ParserService.INSTANCE;
List<ParserProvider> providers = ps.getAllProviders(true);
int lastPrio = Integer.MIN_VALUE;
// Verify names and ordering
int idx = 0;
for (ParserProvider provider : providers) {
Assert.assertEquals("Name of registered core parser providers has to match!", CORE_PROVIDER_NAMES[idx++], provider.info().name());
Assert.assertTrue("#getAllProviders call should returned sorted providers based on priorities", lastPrio < provider.info().priority());
lastPrio = provider.info().priority();
}
}
}