001    package org.apache.maven.settings;
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    
022    import junit.framework.TestCase;
023    
024    import java.util.ArrayList;
025    import java.util.List;
026    import java.util.Properties;
027    import java.util.Random;
028    
029    public class SettingsUtilsTest
030        extends TestCase
031    {
032    
033        public void testShouldAppendRecessivePluginGroupIds()
034        {
035            Settings dominant = new Settings();
036            dominant.addPluginGroup( "org.apache.maven.plugins" );
037            dominant.addPluginGroup( "org.codehaus.modello" );
038    
039            Settings recessive = new Settings();
040            recessive.addPluginGroup( "org.codehaus.plexus" );
041    
042            SettingsUtils.merge( dominant, recessive, Settings.GLOBAL_LEVEL );
043    
044            List<String> pluginGroups = dominant.getPluginGroups();
045    
046            assertNotNull( pluginGroups );
047            assertEquals( 3, pluginGroups.size() );
048            assertEquals( "org.apache.maven.plugins", pluginGroups.get( 0 ) );
049            assertEquals( "org.codehaus.modello", pluginGroups.get( 1 ) );
050            assertEquals( "org.codehaus.plexus", pluginGroups.get( 2 ) );
051        }
052    
053        public void testRoundTripProfiles()
054        {
055            Random entropy = new Random();
056            Profile p = new Profile();
057            p.setId( "id" + Long.toHexString( entropy.nextLong() ) );
058            Activation a = new Activation();
059            a.setActiveByDefault( entropy.nextBoolean() );
060            a.setJdk( "jdk" + Long.toHexString( entropy.nextLong() ) );
061            ActivationFile af = new ActivationFile();
062            af.setExists( "exists" + Long.toHexString( entropy.nextLong() ) );
063            af.setMissing( "missing" + Long.toHexString( entropy.nextLong() ) );
064            a.setFile( af );
065            ActivationProperty ap = new ActivationProperty();
066            ap.setName( "name" + Long.toHexString( entropy.nextLong() ) );
067            ap.setValue( "value" + Long.toHexString( entropy.nextLong() ) );
068            a.setProperty( ap );
069            ActivationOS ao = new ActivationOS();
070            ao.setArch( "arch" + Long.toHexString( entropy.nextLong() ) );
071            ao.setFamily( "family" + Long.toHexString( entropy.nextLong() ) );
072            ao.setName( "name" + Long.toHexString( entropy.nextLong() ) );
073            ao.setVersion( "version" + Long.toHexString( entropy.nextLong() ) );
074            a.setOs( ao );
075            p.setActivation( a );
076            Properties props = new Properties();
077            int count = entropy.nextInt( 10 );
078            for ( int i = 0; i < count; i++ )
079            {
080                props.setProperty( "name" + Long.toHexString( entropy.nextLong() ),
081                                   "value" + Long.toHexString( entropy.nextLong() ) );
082            }
083            p.setProperties( props );
084            count = entropy.nextInt( 3 );
085            List<Repository> repos = new ArrayList<Repository>();
086            for ( int i = 0; i < count; i++ )
087            {
088                Repository r = new Repository();
089                r.setId( "id" + Long.toHexString( entropy.nextLong() ) );
090                r.setName( "name" + Long.toHexString( entropy.nextLong() ) );
091                r.setUrl( "url" + Long.toHexString( entropy.nextLong() ) );
092                repos.add( r );
093            }
094            p.setRepositories( repos );
095            count = entropy.nextInt( 3 );
096            repos = new ArrayList<Repository>();
097            for ( int i = 0; i < count; i++ )
098            {
099                Repository r = new Repository();
100                r.setId( "id" + Long.toHexString( entropy.nextLong() ) );
101                r.setName( "name" + Long.toHexString( entropy.nextLong() ) );
102                r.setUrl( "url" + Long.toHexString( entropy.nextLong() ) );
103                repos.add( r );
104            }
105            p.setPluginRepositories( repos );
106    
107            Profile clone = SettingsUtils.convertToSettingsProfile( SettingsUtils.convertFromSettingsProfile( p ) );
108    
109            assertEquals( p.getId(), clone.getId() );
110            assertEquals( p.getActivation().getJdk(), clone.getActivation().getJdk() );
111            assertEquals( p.getActivation().getFile().getExists(), clone.getActivation().getFile().getExists() );
112            assertEquals( p.getActivation().getFile().getMissing(), clone.getActivation().getFile().getMissing() );
113            assertEquals( p.getActivation().getProperty().getName(), clone.getActivation().getProperty().getName() );
114            assertEquals( p.getActivation().getProperty().getValue(), clone.getActivation().getProperty().getValue() );
115            assertEquals( p.getActivation().getOs().getArch(), clone.getActivation().getOs().getArch() );
116            assertEquals( p.getActivation().getOs().getFamily(), clone.getActivation().getOs().getFamily() );
117            assertEquals( p.getActivation().getOs().getName(), clone.getActivation().getOs().getName() );
118            assertEquals( p.getActivation().getOs().getVersion(), clone.getActivation().getOs().getVersion() );
119            assertEquals( p.getProperties(), clone.getProperties() );
120            assertEquals( p.getRepositories().size(), clone.getRepositories().size() );
121            // TODO deep compare the lists
122            assertEquals( p.getPluginRepositories().size(), clone.getPluginRepositories().size() );
123            // TODO deep compare the lists
124        }
125    
126    }