/*
 * Copyright 2008 Alin Dreghiciu
 *
 * 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 org.ops4j.pax.exam.it;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import static org.ops4j.pax.exam.CoreOptions.*;
import org.ops4j.pax.exam.Option;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.*;
import org.ops4j.pax.exam.junit.AppliesTo;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;

/**
 * Framework options integration tests.
 *
 * @author Alin Dreghiciu (adreghiciu@gmail.com)
 * @since 0.3.0, November 17, 2008
 */
@RunWith( JUnit4TestRunner.class )
public class FrameworkOptionsTest
{

    /**
     * Pax Exam test options that adds a log profile.
     * Valid for all test methods.
     *
     * @return test options
     */
    @Configuration
    public static Option[] configure()
    {
        return options(
            logProfile()
        );
    }

    /**
     * Pax Exam test options that specified Equinox as test framework.
     * Valid for test methods that starts with "equinox".
     *
     * @return test options
     */
    @Configuration
    @AppliesTo( "equinox.*" )
    public static Option[] configureEquinox()
    {
        return options(
            equinox()
        );
    }

    /**
     * Pax Exam test options that specified Felix as test framework.
     * Valid for test methods that starts with "felix".
     *
     * @return test options
     */
    @Configuration
    @AppliesTo( "felix.*" )
    public static Option[] configureFelix()
    {
        return options(
            felix()
        );
    }

    /**
     * Pax Exam test options that specified Knopflerfish as test framework.
     * Valid for test methods that starts with "knopflerfish".
     *
     * @return test options
     */
    @Configuration
    @AppliesTo( "knopflerfish.*" )
    public static Option[] configureKnopflerfish()
    {
        return options(
            knopflerfish()
        );
    }

    /**
     * Test that the started framewrok is Equinox.
     *
     * @param bundleContext injected bundle context
     */
    @Test
    public void equinoxIsUpAndRunning( final BundleContext bundleContext )
    {
        assertThat( "Bundle context", bundleContext, is( notNullValue() ) );
        assertThat(
            "Framework vendor",
            bundleContext.getProperty( Constants.FRAMEWORK_VENDOR ),
            is( equalTo( "Eclipse" ) )
        );
    }

    /**
     * Test that the started framewrok is Felix.
     *
     * @param bundleContext injected bundle context
     */
    @Test
    public void felixIsUpAndRunning( final BundleContext bundleContext )
    {
        assertThat( "Bundle context", bundleContext, is( notNullValue() ) );
        assertThat(
            "Framework vendor",
            bundleContext.getProperty( Constants.FRAMEWORK_VENDOR ),
            is( equalTo( "Apache Software Foundation" ) )
        );
    }

    /**
     * Test that the started framewrok is Knopflerfish.
     *
     * @param bundleContext injected bundle context
     */
    @Test
    @Ignore
    public void knopflerfishIsUpAndRunning( final BundleContext bundleContext )
    {
        assertThat( "Bundle context", bundleContext, is( notNullValue() ) );
        assertThat(
            "Framework vendor",
            bundleContext.getProperty( Constants.FRAMEWORK_VENDOR ),
            is( equalTo( "Knopflerfish" ) )
        );
    }

}
@@ -2008,124 +2008,50 @@
   * 
-Pax Exam test options that specified Felix as test framework.%0A     * Valid for test methods that starts with %22felix%22
+Test that the started framewrok is Equinox
 .%0A  
@@ -2067,175 +2067,386 @@
  * @
-return test options%0A     */%0A    @Configuration%0A    @AppliesTo( %22felix.*%22 )%0A    public static Option%5B%5D configureFelix()%0A    %7B%0A        return options(%0A            felix(
+param bundleContext injected bundle context%0A     */%0A    @Test%0A    public void equinoxIsUpAndRunning( final BundleContext bundleContext )%0A    %7B%0A        assertThat( %22Bundle context%22, bundleContext, is( notNullValue() ) );%0A        assertThat(%0A            %22Framework vendor%22,%0A            bundleContext.getProperty( Constants.FRAMEWORK_VENDOR ),%0A            is( equalTo( %22Eclipse%22 ) 
 )%0A  
@@ -2513,28 +2513,21 @@
 ecified 
-Knopflerfish
+Felix
  as test
@@ -2586,28 +2586,21 @@
 s with %22
-knopflerfish
+felix
 %22.%0A     
@@ -2673,28 +2673,21 @@
 iesTo( %22
-knopflerfish
+felix
 .*%22 )%0A  
@@ -2720,28 +2720,21 @@
 onfigure
-Knopflerfish
+Felix
 ()%0A    %7B
@@ -2770,28 +2770,21 @@
         
-knopflerfish
+felix
 ()%0A     
@@ -2838,38 +2838,36 @@
 ed framewrok is 
-Equino
+Feli
 x.%0A     *%0A     *
@@ -2938,38 +2938,36 @@
     public void 
-equino
+feli
 xIsUpAndRunning(
@@ -3225,39 +3225,58 @@
   is( equalTo( %22
-Eclipse
+Apache Software Foundation
 %22 ) )%0A        );
@@ -3302,48 +3302,138 @@
   * 
-Test that the started framewrok is Felix
+Pax Exam test options that specified Knopflerfish as test framework.%0A     * Valid for test methods that starts with %22knopflerfish%22
 .%0A  
@@ -3449,403 +3449,196 @@
  * @
-param bundleContext injected bundle context%0A     */%0A    @Test%0A    public void felixIsUpAndRunning( final BundleContext bundleContext )%0A    %7B%0A        assertThat( %22Bundle context%22, bundleContext, is( notNullValue() ) );%0A        assertThat(%0A            %22Framework vendor%22,%0A            bundleContext.getProperty( Constants.FRAMEWORK_VENDOR ),%0A            is( equalTo( %22Apache Software Foundation%22 ) 
+return test options%0A     */%0A    @Configuration%0A    @AppliesTo( %22knopflerfish.*%22 )%0A    public static Option%5B%5D configureKnopflerfish()%0A    %7B%0A        return options(%0A            knopflerfish(
 )%0A  

Move config methods nearby tests.