### Question:
Engine { public static final synchronized void start(Engine engine) { Check.notNull(engine); if (started) { throw new LionEngineException(ERROR_STARTED_ALREADY); } Verbose.info(new StringBuilder(MIN_LENGTH).append(ENGINE_STARTING) .append(Constant.ENGINE_VERSION) .append(Constant.QUOTE) .append(FOR) .append(Constant.QUOTE) .append(engine.getName()) .append(Constant.SPACE) .append(engine.getVersion()) .append(Constant.QUOTE) .toString()); Medias.setFactoryMedia(new FactoryMediaDefault()); engine.open(); Engine.engine = engine; started = true; } protected  Engine(String name, Version version); static final synchronized void start(Engine engine); static final synchronized void terminate(); static final synchronized String getProgramName(); static final synchronized Version getProgramVersion(); static final boolean isStarted(); final String getName(); final Version getVersion();  }### Answer:
@Test void testStart() { Engine.start(new EngineMock("name", Version.DEFAULT)); assertThrows(() -> Engine.start(new EngineMock(null, Version.DEFAULT)), Check.ERROR_NULL); assertThrows(() -> Engine.start(new EngineMock("name", null)), Check.ERROR_NULL); }
@Test void testAlreadyStarted() { Engine.start(new EngineMock("name", Version.DEFAULT)); assertThrows(() -> Engine.start(new EngineMock("name", Version.DEFAULT)), Engine.ERROR_STARTED_ALREADY); }