com.opera.core.systems.OperaLauncherRunnerTest.java Source code

Java tutorial

Introduction

Here is the source code for com.opera.core.systems.OperaLauncherRunnerTest.java

Source

/*
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));
    }

}