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     */
016    package org.ini4j;
017    
018    import org.ini4j.spi.WinEscapeToolTest;
019    
020    import static org.junit.Assert.assertEquals;
021    import static org.junit.Assert.assertFalse;
022    import static org.junit.Assert.assertTrue;
023    
024    import org.junit.Test;
025    
026    import java.io.File;
027    import java.io.FileInputStream;
028    import java.io.FileReader;
029    import java.io.IOException;
030    import java.io.InputStream;
031    import java.io.Reader;
032    
033    import java.net.URL;
034    
035    public class WiniTest extends Ini4jCase
036    {
037        @Test public void testConstructors() throws Exception
038        {
039            File f = File.createTempFile("wini", "test");
040    
041            f.deleteOnExit();
042            assertTrue(new WiniHelper(new FileInputStream(f)).isOK());
043            assertTrue(new WiniHelper(new FileReader(f)).isOK());
044            assertTrue(new WiniHelper(f).isOK());
045            assertTrue(new WiniHelper(f.toURI().toURL()).isOK());
046        }
047    
048        @Test public void testDefaults()
049        {
050            Wini wini = new Wini();
051            Config cfg = wini.getConfig();
052    
053            assertTrue(cfg.isGlobalSection());
054            assertTrue(cfg.isEmptyOption());
055            assertFalse(cfg.isMultiOption());
056            assertFalse(cfg.isEscape());
057        }
058    
059        @Test public void testEscape()
060        {
061            Wini instance = new Wini();
062    
063            assertEquals(WinEscapeToolTest.ESCAPE1, instance.escape(WinEscapeToolTest.VALUE1));
064            assertEquals(WinEscapeToolTest.ESCAPE2, instance.escape(WinEscapeToolTest.VALUE2));
065            assertEquals(WinEscapeToolTest.ESCAPE3, instance.escape(WinEscapeToolTest.VALUE3));
066            assertEquals(WinEscapeToolTest.ESCAPE4, instance.escape(WinEscapeToolTest.VALUE4));
067            assertEquals(WinEscapeToolTest.ESCAPE5, instance.escape(WinEscapeToolTest.VALUE5));
068        }
069    
070        @Test public void testUnescape() throws Exception
071        {
072            Wini instance = new Wini();
073    
074            assertEquals(WinEscapeToolTest.VALUE1, instance.unescape(WinEscapeToolTest.ESCAPE1));
075            assertEquals(WinEscapeToolTest.VALUE2, instance.unescape(WinEscapeToolTest.ESCAPE2));
076            assertEquals(WinEscapeToolTest.VALUE3, instance.unescape(WinEscapeToolTest.ESCAPE3));
077            assertEquals(WinEscapeToolTest.VALUE4, instance.unescape(WinEscapeToolTest.ESCAPE4));
078            assertEquals(WinEscapeToolTest.VALUE5, instance.unescape(WinEscapeToolTest.ESCAPE5));
079            assertEquals("=", instance.unescape("\\="));
080            assertEquals("xAx", instance.unescape("x\\o101x"));
081        }
082    
083        private static class WiniHelper extends Wini
084        {
085            private boolean _ok;
086    
087            public WiniHelper(Reader input) throws IOException, InvalidFileFormatException
088            {
089                super(input);
090            }
091    
092            public WiniHelper(InputStream input) throws IOException, InvalidFileFormatException
093            {
094                super(input);
095            }
096    
097            public WiniHelper(URL input) throws IOException, InvalidFileFormatException
098            {
099                super(input);
100            }
101    
102            public WiniHelper(File input) throws IOException, InvalidFileFormatException
103            {
104                super(input);
105            }
106    
107            public boolean isOK()
108            {
109                return _ok;
110            }
111    
112            @Override public void load(InputStream input) throws IOException, InvalidFileFormatException
113            {
114                _ok = true;
115            }
116    
117            @Override public void load(Reader input) throws IOException, InvalidFileFormatException
118            {
119                _ok = true;
120            }
121    
122            @Override public void load(File input) throws IOException, InvalidFileFormatException
123            {
124                _ok = true;
125            }
126    
127            @Override public void load(URL input) throws IOException, InvalidFileFormatException
128            {
129                _ok = true;
130            }
131        }
132    }