1 package org.apache.maven.archetype.ui.generation;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23
24 import java.util.Arrays;
25 import java.util.Collections;
26 import java.util.List;
27
28 import org.apache.maven.archetype.ui.ArchetypeConfiguration;
29
30 public class RequiredPropertyComparatorTest
31 extends TestCase
32 {
33 private DefaultArchetypeGenerationConfigurator.RequiredPropertyComparator requiredPropertyComparator;
34
35 private ArchetypeConfiguration archetypeConfiguration;
36
37 @Override
38 public void setUp()
39 throws Exception
40 {
41 archetypeConfiguration = new ArchetypeConfiguration();
42 requiredPropertyComparator =
43 new DefaultArchetypeGenerationConfigurator.RequiredPropertyComparator( archetypeConfiguration );
44 }
45
46 public void testShouldOrderPropertiesWhenReferringEachOther()
47 {
48 archetypeConfiguration.addRequiredProperty( "prop1" );
49 archetypeConfiguration.setDefaultProperty( "prop1", "${prop2}" );
50 archetypeConfiguration.addRequiredProperty( "prop2" );
51 archetypeConfiguration.setDefaultProperty( "prop2", "prop2 default value" );
52
53 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
54 assertEquals( Arrays.asList( "prop1", "prop2" ), requiredProperties );
55 Collections.sort( requiredProperties, requiredPropertyComparator );
56 assertEquals( Arrays.asList( "prop2", "prop1" ), requiredProperties );
57 }
58
59 public void testShouldOrderPropertiesWhenReferringEachOther2()
60 {
61 archetypeConfiguration.addRequiredProperty( "prop1" );
62 archetypeConfiguration.setDefaultProperty( "prop1", "${prop2}" );
63 archetypeConfiguration.addRequiredProperty( "prop2" );
64
65 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
66 assertEquals( Arrays.asList( "prop1", "prop2" ), requiredProperties );
67 Collections.sort( requiredProperties, requiredPropertyComparator );
68 assertEquals( Arrays.asList( "prop2", "prop1" ), requiredProperties );
69 }
70
71 public void testTransitivePropertyReferences()
72 {
73 archetypeConfiguration.addRequiredProperty( "foo" );
74 archetypeConfiguration.setDefaultProperty( "foo", "${bar}" );
75 archetypeConfiguration.addRequiredProperty( "bar" );
76 archetypeConfiguration.setDefaultProperty( "bar", "${baz}" );
77 archetypeConfiguration.addRequiredProperty( "baz" );
78
79 List<String> requiredProperties = archetypeConfiguration.getRequiredProperties();
80 assertEquals( Arrays.asList( "foo", "bar", "baz" ), requiredProperties );
81 Collections.sort( requiredProperties, requiredPropertyComparator );
82 assertEquals( Arrays.asList( "baz", "bar", "foo" ), requiredProperties );
83 }
84 }