    1   package org.apache.commons.configuration;
    2
    3   import java.util.Iterator;
    4   import java.util.Map;
    5
    6   import junit.framework.Test;
    7   import junit.framework.TestCase;
    8   import junit.framework.TestSuite;
    9
    10  /***
    11   * @author rgladwel
    12   */
    13  public class TestConfigurationSet extends TestCase {
    14
    15      ConfigurationMap.ConfigurationSet set;
    16
    17      String[] properties = {
    18              "booleanProperty",
    19              "doubleProperty",
    20              "floatProperty",
    21              "intProperty",
    22              "longProperty",
    23              "shortProperty",
    24              "stringProperty"
    25      };
    26
    27      Object[] values = {
    28              Boolean.TRUE,
    29              new Double(Double.MAX_VALUE),
    30              new Float(Float.MAX_VALUE),
    31              new Integer(Integer.MAX_VALUE),
    32              new Long(Long.MAX_VALUE),
    33              new Short(Short.MAX_VALUE),
    34              "This is a string"
    35      };
    36
    37      /***
    38       * Construct a new instance of this test case.
    39       * @param name Name of the test case
    40       */
    41      public TestConfigurationSet(String name)
    42      {
    43          super(name);
    44      }
    45
    46      /***
    47       * Set up instance variables required by this test case.
    48       */
    49      public void setUp() throws Exception
    50      {
    51          BaseConfiguration configuration = new BaseConfiguration();
    52          for(int i = 0; i < properties.length ; i++)
    53              configuration.setProperty(properties[i], values[i]);
    54          set = new ConfigurationMap.ConfigurationSet(configuration);
    55      }
    56
    57      /***
    58       * Return the tests included in this test suite.
    59       */
    60      public static Test suite()
    61      {
    62          return (new TestSuite(TestConfigurationSet.class));
    63      }
    64
    65      /***
    66       * Tear down instance variables required by this test case.
    67       */
    68      public void tearDown()
    69      {
    70          set = null;
    71      }
    72
    73      public void testSize() {
    74          assertEquals("Entry set does not match properties size.", properties.length, set.size());
    75      }
    76
    77      /***
    78       * Class under test for Iterator iterator()
    79       */
    80      public void testIterator() {
    81          Iterator iterator = set.iterator();
    82          while(iterator.hasNext()) {
    83              Object object = iterator.next();
    84              assertTrue("Entry set iterator did not return EntrySet object, returned "
    85                      + object.getClass().getName(), object instanceof Map.Entry);
    86              Map.Entry entry = (Map.Entry) object;
    87              boolean found = false;
    88              for(int i = 0; i < properties.length; i++) {
    89                  if(entry.getKey().equals(properties[i])) {
    90                      assertEquals("Incorrect value for property " +
    91                              properties[i],values[i],entry.getValue());
    92                      found = true;
    93                  }
    94              }
    95              assertTrue("Could not find property " + entry.getKey(),found);
    96              iterator.remove();
    97          }
    98          assertTrue("Iterator failed to remove all properties.",set.isEmpty());
    99      }
    100
    101 }