Java tutorial
/* Copyright 2011-2012 Opera Software ASA Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package com.opera.core.systems; import com.opera.core.systems.model.ScreenShotReply; import com.opera.core.systems.runner.OperaRunnerException; import com.opera.core.systems.runner.launcher.OperaLauncherRunner; import com.opera.core.systems.runner.launcher.OperaLauncherRunnerSettings; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Platform; import java.io.File; import java.util.logging.Level; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; public class OperaLauncherRunnerTest { private OperaLauncherRunnerSettings settings; private OperaLauncherRunner runner; @Before public void beforeEach() { settings = new OperaLauncherRunnerSettings(); settings.setLoggingLevel(Level.FINE); } @After public void afterEach() { if (runner != null && runner.isOperaRunning()) { runner.stopOpera(); runner.shutdown(); assertFalse(runner.isOperaRunning()); } } @Test public void testConstructor() { runner = new OperaLauncherRunner(); assertNotNull(runner); } @Test public void testConstructorWithSettingsBinary() { settings.setBinary(OperaPaths.operaPath()); runner = new OperaLauncherRunner(settings); assertNotNull(runner); } @Test public void testDefaultCrashedState() { runner = new OperaLauncherRunner(settings); assertFalse(runner.hasOperaCrashed()); } @Test public void testDefaultIsOperaRunning() { runner = new OperaLauncherRunner(settings); assertFalse(runner.isOperaRunning()); } @Test public void testStartAndStopOpera() { runner = new OperaLauncherRunner(settings); runner.startOpera(); assertTrue(runner.isOperaRunning()); runner.stopOpera(); assertFalse(runner.isOperaRunning()); } @Test(expected = OperaRunnerException.class) public void testShutdownLauncher() { runner = new OperaLauncherRunner(settings); runner.shutdown(); // Expecting OperaRunnerException as we tried to start Opera when launcher isn't running runner.startOpera(); } @Test public void testConstructorWithSettingsArguments() { settings.setArguments(OperaArguments.parse("-geometry 1024x768")); runner = new OperaLauncherRunner(settings); runner.startOpera(); assertTrue(runner.isOperaRunning()); } @Test public void testDoubleShutdown() { runner = new OperaLauncherRunner(settings); runner.stopOpera(); runner.shutdown(); // verify that a second shutdown call doesn't do any harm (shouldn't) runner.shutdown(); } @Test public void testStartAndStopOperaTenTimes() { settings.setArguments(OperaArguments.parse("-geometry 640x480")); runner = new OperaLauncherRunner(settings); for (int i = 0; i < 10; i++) { runner.startOpera(); assertTrue(runner.isOperaRunning()); runner.stopOpera(); assertFalse(runner.isOperaRunning()); } runner.shutdown(); } @Test public void testBadLauncher() throws Exception { File fakeLauncher; // Programs that should be installed that have no side effects when run if (Platform.getCurrent().is(Platform.WINDOWS)) { fakeLauncher = new File("C:\\WINDOWS\\system32\\find.exe"); } else { fakeLauncher = new File("/bin/echo"); } assertTrue("Imposter launcher exists", fakeLauncher.exists()); settings.setLauncher(fakeLauncher.getCanonicalFile()); try { runner = new OperaLauncherRunner(settings); fail("Did not throw OperaRunnerException"); } catch (OperaRunnerException e) { assertTrue("Throws timeout error", e.getMessage().toLowerCase().contains("timeout")); } } @Test // TODO(andreastt): Trigger something which actually generates a crashlog public void testGetOperaDefaultCrashlog() { runner = new OperaLauncherRunner(settings); runner.startOpera(); String crashlog = runner.getOperaCrashlog(); assertNull(crashlog); } @Test public void testSaveScreenshot() { runner = new OperaLauncherRunner(settings); ScreenShotReply screenshot = runner.saveScreenshot(0); assertNotNull(screenshot); runner.shutdown(); } @Test public void testLoggingLevel() { assertEquals(Level.SEVERE, OperaLauncherRunner.toLauncherLoggingLevel(Level.SEVERE)); } @Test public void testLoggingLevelToAll() { assertEquals(Level.FINEST, OperaLauncherRunner.toLauncherLoggingLevel(Level.ALL)); } @Test public void testLoggingLevelToConfig() { assertEquals(Level.FINE, OperaLauncherRunner.toLauncherLoggingLevel(Level.CONFIG)); } @Test public void testLoggingLevelToFiner() { assertEquals(Level.FINE, OperaLauncherRunner.toLauncherLoggingLevel(Level.FINER)); } @Test public void testLoggingLevelToOff() { assertEquals(Level.OFF, OperaLauncherRunner.toLauncherLoggingLevel(Level.OFF)); } }