001package org.apache.maven.model.profile.activation;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *   http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import java.util.Properties;
023
024import org.apache.maven.model.Activation;
025import org.apache.maven.model.Profile;
026
027/**
028 * Tests {@link JdkVersionProfileActivator}.
029 * 
030 * @author Benjamin Bentmann
031 */
032public class JdkVersionProfileActivatorTest
033    extends AbstractProfileActivatorTest<JdkVersionProfileActivator>
034{
035
036    public JdkVersionProfileActivatorTest()
037    {
038        super( JdkVersionProfileActivator.class );
039    }
040
041    private Profile newProfile( String jdkVersion )
042    {
043        Activation a = new Activation();
044        a.setJdk( jdkVersion );
045
046        Profile p = new Profile();
047        p.setActivation( a );
048
049        return p;
050    }
051
052    private Properties newProperties( String javaVersion )
053    {
054        Properties props = new Properties();
055        props.setProperty( "java.version", javaVersion );
056        return props;
057    }
058
059    public void testNullSafe()
060        throws Exception
061    {
062        Profile p = new Profile();
063
064        assertActivation( false, p, newContext( null, null ) );
065
066        p.setActivation( new Activation() );
067
068        assertActivation( false, p, newContext( null, null ) );
069    }
070
071    public void testPrefix()
072        throws Exception
073    {
074        Profile profile = newProfile( "1.4" );
075
076        assertActivation( true, profile, newContext( null, newProperties( "1.4" ) ) );
077        assertActivation( true, profile, newContext( null, newProperties( "1.4.2" ) ) );
078        assertActivation( true, profile, newContext( null, newProperties( "1.4.2_09" ) ) );
079        assertActivation( true, profile, newContext( null, newProperties( "1.4.2_09-b03" ) ) );
080
081        assertActivation( false, profile, newContext( null, newProperties( "1.3" ) ) );
082
083        assertActivation( false, profile, newContext( null, newProperties( "1.5" ) ) );
084    }
085
086    public void testPrefixNegated()
087        throws Exception
088    {
089        Profile profile = newProfile( "!1.4" );
090
091        assertActivation( false, profile, newContext( null, newProperties( "1.4" ) ) );
092        assertActivation( false, profile, newContext( null, newProperties( "1.4.2" ) ) );
093        assertActivation( false, profile, newContext( null, newProperties( "1.4.2_09" ) ) );
094        assertActivation( false, profile, newContext( null, newProperties( "1.4.2_09-b03" ) ) );
095
096        assertActivation( true, profile, newContext( null, newProperties( "1.3" ) ) );
097
098        assertActivation( true, profile, newContext( null, newProperties( "1.5" ) ) );
099    }
100
101    public void testVersionRangeInclusiveBounds()
102        throws Exception
103    {
104        Profile profile = newProfile( "[1.5,1.6]" );
105
106        assertActivation( false, profile, newContext( null, newProperties( "1.4" ) ) );
107        assertActivation( false, profile, newContext( null, newProperties( "1.4.2" ) ) );
108        assertActivation( false, profile, newContext( null, newProperties( "1.4.2_09" ) ) );
109        assertActivation( false, profile, newContext( null, newProperties( "1.4.2_09-b03" ) ) );
110
111        assertActivation( true, profile, newContext( null, newProperties( "1.5" ) ) );
112        assertActivation( true, profile, newContext( null, newProperties( "1.5.0" ) ) );
113        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09" ) ) );
114        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09-b03" ) ) );
115        assertActivation( true, profile, newContext( null, newProperties( "1.5.1" ) ) );
116
117        assertActivation( true, profile, newContext( null, newProperties( "1.6" ) ) );
118        assertActivation( true, profile, newContext( null, newProperties( "1.6.0" ) ) );
119        assertActivation( true, profile, newContext( null, newProperties( "1.6.0_09" ) ) );
120        assertActivation( true, profile, newContext( null, newProperties( "1.6.0_09-b03" ) ) );
121    }
122
123    public void testVersionRangeExclusiveBounds()
124        throws Exception
125    {
126        Profile profile = newProfile( "(1.3,1.6)" );
127
128        assertActivation( false, profile, newContext( null, newProperties( "1.3" ) ) );
129        assertActivation( false, profile, newContext( null, newProperties( "1.3.0" ) ) );
130        assertActivation( false, profile, newContext( null, newProperties( "1.3.0_09" ) ) );
131        assertActivation( false, profile, newContext( null, newProperties( "1.3.0_09-b03" ) ) );
132
133        assertActivation( true, profile, newContext( null, newProperties( "1.3.1" ) ) );
134        assertActivation( true, profile, newContext( null, newProperties( "1.3.1_09" ) ) );
135        assertActivation( true, profile, newContext( null, newProperties( "1.3.1_09-b03" ) ) );
136
137        assertActivation( true, profile, newContext( null, newProperties( "1.5" ) ) );
138        assertActivation( true, profile, newContext( null, newProperties( "1.5.0" ) ) );
139        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09" ) ) );
140        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09-b03" ) ) );
141        assertActivation( true, profile, newContext( null, newProperties( "1.5.1" ) ) );
142
143        assertActivation( false, profile, newContext( null, newProperties( "1.6" ) ) );
144    }
145
146    public void testVersionRangeInclusiveLowerBound()
147        throws Exception
148    {
149        Profile profile = newProfile( "[1.5,)" );
150
151        assertActivation( false, profile, newContext( null, newProperties( "1.4" ) ) );
152        assertActivation( false, profile, newContext( null, newProperties( "1.4.2" ) ) );
153        assertActivation( false, profile, newContext( null, newProperties( "1.4.2_09" ) ) );
154        assertActivation( false, profile, newContext( null, newProperties( "1.4.2_09-b03" ) ) );
155
156        assertActivation( true, profile, newContext( null, newProperties( "1.5" ) ) );
157        assertActivation( true, profile, newContext( null, newProperties( "1.5.0" ) ) );
158        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09" ) ) );
159        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09-b03" ) ) );
160        assertActivation( true, profile, newContext( null, newProperties( "1.5.1" ) ) );
161
162        assertActivation( true, profile, newContext( null, newProperties( "1.6" ) ) );
163        assertActivation( true, profile, newContext( null, newProperties( "1.6.0" ) ) );
164        assertActivation( true, profile, newContext( null, newProperties( "1.6.0_09" ) ) );
165        assertActivation( true, profile, newContext( null, newProperties( "1.6.0_09-b03" ) ) );
166    }
167
168    public void testVersionRangeExclusiveUpperBound()
169        throws Exception
170    {
171        Profile profile = newProfile( "(,1.6)" );
172
173        assertActivation( true, profile, newContext( null, newProperties( "1.5" ) ) );
174        assertActivation( true, profile, newContext( null, newProperties( "1.5.0" ) ) );
175        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09" ) ) );
176        assertActivation( true, profile, newContext( null, newProperties( "1.5.0_09-b03" ) ) );
177        assertActivation( true, profile, newContext( null, newProperties( "1.5.1" ) ) );
178
179        assertActivation( false, profile, newContext( null, newProperties( "1.6" ) ) );
180        assertActivation( false, profile, newContext( null, newProperties( "1.6.0" ) ) );
181        assertActivation( false, profile, newContext( null, newProperties( "1.6.0_09" ) ) );
182        assertActivation( false, profile, newContext( null, newProperties( "1.6.0_09-b03" ) ) );
183    }
184
185}