001/*
002 * Copyright 2005,2009 Ivan SZKIBA
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of 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,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.ini4j;
017
018import org.ini4j.test.Helper;
019
020import static org.junit.Assert.assertEquals;
021import static org.junit.Assert.assertNotNull;
022import static org.junit.Assert.assertNull;
023import static org.junit.Assert.assertSame;
024import static org.junit.Assert.fail;
025
026import org.junit.Test;
027
028import java.util.prefs.Preferences;
029
030public class IniPreferencesFactoryTest extends Ini4jCase
031{
032    private static final String DUMMY = "dummy";
033
034    @Test public void testGetIniLocation() throws Exception
035    {
036        IniPreferencesFactory factory = new IniPreferencesFactory();
037
038        System.setProperty(DUMMY, DUMMY);
039        assertEquals(DUMMY, factory.getIniLocation(DUMMY));
040        System.getProperties().remove(DUMMY);
041        assertNull(factory.getIniLocation(DUMMY));
042    }
043
044    @SuppressWarnings("empty-statement")
045    @Test public void testGetResourceAsStream() throws Exception
046    {
047        IniPreferencesFactory factory = new IniPreferencesFactory();
048
049        // class path
050        assertNotNull(factory.getResourceAsStream(Helper.DWARFS_INI));
051
052        // url
053        String location = Helper.getResourceURL(Helper.DWARFS_INI).toString();
054
055        assertNotNull(factory.getResourceAsStream(location));
056
057        // invalid url should throw IllegalArgumentException
058        try
059        {
060            factory.getResourceAsStream("http://");
061            fail();
062        }
063        catch (IllegalArgumentException x)
064        {
065            ;
066        }
067    }
068
069    @Test public void testNewIniPreferences()
070    {
071        System.setProperty(DUMMY, DUMMY);
072        try
073        {
074            new IniPreferencesFactory().newIniPreferences(DUMMY);
075            missing(IllegalArgumentException.class);
076        }
077        catch (IllegalArgumentException x)
078        {
079            //
080        }
081        finally
082        {
083            System.getProperties().remove(DUMMY);
084        }
085    }
086
087    @Test public void testSystemRoot() throws Exception
088    {
089        Preferences prefs = Preferences.systemRoot();
090
091        assertNotNull(prefs);
092        assertEquals(IniPreferences.class, prefs.getClass());
093        assertSame(prefs, Preferences.systemRoot());
094    }
095
096    @Test public void testUserRoot() throws Exception
097    {
098        Preferences prefs = Preferences.userRoot();
099
100        assertNotNull(prefs);
101        assertEquals(IniPreferences.class, prefs.getClass());
102        assertSame(prefs, Preferences.userRoot());
103    }
104}