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.spi.WinEscapeToolTest;
019
020import static org.junit.Assert.assertEquals;
021import static org.junit.Assert.assertFalse;
022import static org.junit.Assert.assertTrue;
023
024import org.junit.Test;
025
026import java.io.File;
027import java.io.FileInputStream;
028import java.io.FileReader;
029import java.io.IOException;
030import java.io.InputStream;
031import java.io.Reader;
032
033import java.net.URL;
034
035public 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}