@Test
public void testConfigure() 
{

	try {
		Configuration config = new Configuration();
		
		// check missing number of fields
		boolean validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		} catch(IllegalStateException ise) {
			validConfig = false;
		}
		assertFalse(validConfig);
		
		// check missing file parser
		config.setInteger(CsvOutputFormat.NUM_FIELDS_PARAMETER, 2);
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		} catch(IllegalStateException ise) {
			validConfig = false;
		}
		assertFalse(validConfig);
		
		// check valid config
		config.setClass(CsvOutputFormat.FIELD_TYPE_PARAMETER_PREFIX + 0, StringValue.class);
		config.setClass(CsvOutputFormat.FIELD_TYPE_PARAMETER_PREFIX + 1, IntValue.class);
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		}
		assertTrue(validConfig);
		
		// check invalid file parser config
		config.setInteger(CsvOutputFormat.NUM_FIELDS_PARAMETER, 3);
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		}
		assertFalse(validConfig);
		
		// check valid config
		config.setClass(CsvOutputFormat.FIELD_TYPE_PARAMETER_PREFIX + 2, StringValue.class);
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		}
		assertTrue(validConfig);
		
		// check valid config
		config.setString(CsvOutputFormat.FIELD_DELIMITER_PARAMETER, "|");
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
			System.out.println(iae.getMessage());
		}
		assertTrue(validConfig);
		
		// check invalid text pos config
		config.setInteger(CsvOutputFormat.RECORD_POSITION_PARAMETER_PREFIX + 1, 0);
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		}
		assertFalse(validConfig);
		
		// check valid text pos config
		config.setInteger(CsvOutputFormat.RECORD_POSITION_PARAMETER_PREFIX + 0, 3);
		config.setInteger(CsvOutputFormat.RECORD_POSITION_PARAMETER_PREFIX + 2, 9);
		validConfig = true;
		try {
			format.configure(config);
		} catch(IllegalArgumentException iae) {
			validConfig = false;
		}
		assertTrue(validConfig);
	}
	catch (Exception ex) {
		Assert.fail("Test failed due to a " + ex.getClass().getSimpleName() + ": " + ex.getMessage());
	}
}