    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package org.apache.commons.configuration;
    19
    20  import java.util.HashMap;
    21  import java.util.Map;
    22
    23  import org.apache.commons.configuration.event.ConfigurationEvent;
    24  import org.apache.commons.configuration.event.ConfigurationListener;
    25
    26  /***
    27   * Tests for MapConfiguration.
    28   *
    29   * @author Emmanuel Bourg
    30   * @version $Revision: 439648 $, $Date: 2006-09-02 22:42:10 +0200 (Sa, 02 Sep 2006) $
    31   */
    32  public class TestMapConfiguration extends TestAbstractConfiguration
    33  {
    34      protected AbstractConfiguration getConfiguration()
    35      {
    36          Map map = new HashMap();
    37          map.put("key1", "value1");
    38          map.put("key2", "value2");
    39          map.put("list", "value1, value2");
    40
    41          return new MapConfiguration(map);
    42      }
    43
    44      protected AbstractConfiguration getEmptyConfiguration()
    45      {
    46          return new MapConfiguration(new HashMap());
    47      }
    48
    49      public void testGetMap()
    50      {
    51          Map map = new HashMap();
    52
    53          MapConfiguration conf = new MapConfiguration(map);
    54          assertEquals(map, conf.getMap());
    55      }
    56
    57      public void testClone()
    58      {
    59          MapConfiguration config = (MapConfiguration) getConfiguration();
    60          MapConfiguration copy = (MapConfiguration) config.clone();
    61          StrictConfigurationComparator comp = new StrictConfigurationComparator();
    62          assertTrue("Configurations are not equal", comp.compare(config, copy));
    63      }
    64
    65      /***
    66       * Tests if the cloned configuration decoupled from the original.
    67       */
    68      public void testCloneModify()
    69      {
    70          MapConfiguration config = (MapConfiguration) getConfiguration();
    71          config.addConfigurationListener(new ConfigurationListener()
    72          {
    73              public void configurationChanged(ConfigurationEvent event)
    74              {
    75                  // Just a dummy
    76              }
    77          });
    78          MapConfiguration copy = (MapConfiguration) config.clone();
    79          assertTrue("Event listeners were copied", copy
    80                  .getConfigurationListeners().isEmpty());
    81
    82          config.addProperty("cloneTest", Boolean.TRUE);
    83          assertFalse("Map not decoupled", copy.containsKey("cloneTest"));
    84          copy.clearProperty("key1");
    85          assertEquals("Map not decoupled (2)", "value1", config
    86                  .getString("key1"));
    87      }
    88  }