001    /*
002     * Copyright 2002-2004 the original author or authors.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     * 
008     * http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.settings;
017    
018    import junit.framework.TestCase;
019    
020    /**
021     * @author Peter De Bruycker
022     */
023    public class SettingsManagerTests extends TestCase {
024            public void testSetSettingsFactory() {
025                    SettingsManager settingsManager = new SettingsManager();
026                    assertTrue("Default must be TransientSettingsFactory",
027                                    settingsManager.getSettingsFactory() instanceof TransientSettingsFactory);
028    
029                    TestableSettingsFactory factory = new TestableSettingsFactory();
030                    settingsManager.setSettingsFactory(factory);
031                    assertEquals(factory, settingsManager.getSettingsFactory());
032    
033                    settingsManager.setSettingsFactory(null);
034                    assertTrue("null resets factory", settingsManager.getSettingsFactory() instanceof TransientSettingsFactory);
035            }
036    
037            public void testGetInternalSettings() throws SettingsException {
038                    SettingsManager settingsManager = new SettingsManager();
039    
040                    TestableSettingsFactory factory = new TestableSettingsFactory();
041                    settingsManager.setSettingsFactory(factory);
042    
043                    TransientSettings settings = new TransientSettings();
044                    factory.setSettings(settings);
045    
046                    Settings internalSettings = settingsManager.getInternalSettings();
047                    assertSame(settings, internalSettings);
048                    assertEquals(1, factory.getCount());
049                    assertEquals("internal", factory.getKey());
050    
051                    factory.reset();
052    
053                    Settings internalSettings2 = settingsManager.getInternalSettings();
054                    assertSame(internalSettings, internalSettings2);
055                    assertEquals(0, factory.getCount());
056            }
057    
058            public void testGetUserSettings() throws SettingsException {
059                    SettingsManager settingsManager = new SettingsManager();
060    
061                    TestableSettingsFactory factory = new TestableSettingsFactory();
062                    settingsManager.setSettingsFactory(factory);
063    
064                    TransientSettings settings = new TransientSettings();
065                    factory.setSettings(settings);
066    
067                    Settings userSettings = settingsManager.getUserSettings();
068                    assertSame(settings, userSettings);
069                    assertEquals(1, factory.getCount());
070                    assertEquals("user", factory.getKey());
071    
072                    factory.reset();
073    
074                    Settings userSettings2 = settingsManager.getUserSettings();
075                    assertSame(userSettings, userSettings2);
076                    assertEquals(0, factory.getCount());
077            }
078    
079            public void testCreateSettings() throws SettingsException {
080                    SettingsManager settingsManager = new SettingsManager();
081    
082                    TestableSettingsFactory factory = new TestableSettingsFactory();
083                    settingsManager.setSettingsFactory(factory);
084    
085                    TransientSettings settings = new TransientSettings();
086                    factory.setSettings(settings);
087    
088                    Settings otherSettings = settingsManager.createSettings("key");
089                    assertSame(settings, otherSettings);
090                    assertEquals(1, factory.getCount());
091                    assertEquals("key", factory.getKey());
092    
093                    factory.reset();
094                    factory.setSettings(settings);
095    
096                    Settings otherSettings2 = settingsManager.createSettings("key");
097                    assertSame(settings, otherSettings2);
098                    assertEquals(1, factory.getCount());
099                    assertEquals("key", factory.getKey());
100            }
101    
102    }