@Test
	public void testSourceRequirements() {
		// check data access class
		try {
			Class<?> clazz = Class.forName("suncertify.db.Data");
			Assert.assertTrue("DBMain is not assignable from " + clazz,
					DBMain.class.isAssignableFrom(clazz));
		} catch (ClassNotFoundException e1) {
			Assert.fail("data access class not found");
		}
		// check the unimplemented exceptions
		final Class<?>[] exceptionClasses = { RecordNotFoundException.class,
				DuplicateKeyException.class };
		for (Class<?> exceptionClass : exceptionClasses) {
			// a zero argument constructor
			try {
				exceptionClass.getConstructor((Class[]) null);
			} catch (SecurityException e) {
				Assert.fail("security violation");
			} catch (NoSuchMethodException e) {
				Assert.fail("the zero argument constructor not found");
			}
			// a constructor with String argument
			try {
				exceptionClass.getConstructor(String.class);
			} catch (SecurityException e) {
				Assert.fail("security violation");
			} catch (NoSuchMethodException e) {
				Assert.fail("constructor not found");
			}
		}
	}