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.junit.Assert; 019import org.junit.Test; 020 021import java.nio.charset.Charset; 022 023public class ConfigTest extends Ini4jCase 024{ 025 @Test public void testDefaults() 026 { 027 Config def = newDefaultConfig(); 028 029 assertEquals(def, new Config()); 030 assertEquals(def, Config.getGlobal()); 031 assertEquals(def, Config.getGlobal().clone()); 032 } 033 034 @Test public void testSystemProperties() 035 { 036 Config exp = newInverseConfig(); 037 038 setBoolean(Config.PROP_EMPTY_OPTION, exp.isEmptyOption()); 039 setBoolean(Config.PROP_EMPTY_SECTION, exp.isEmptySection()); 040 setBoolean(Config.PROP_GLOBAL_SECTION, exp.isGlobalSection()); 041 setString(Config.PROP_GLOBAL_SECTION_NAME, exp.getGlobalSectionName()); 042 setBoolean(Config.PROP_INCLUDE, exp.isInclude()); 043 setBoolean(Config.PROP_LOWER_CASE_OPTION, exp.isLowerCaseOption()); 044 setBoolean(Config.PROP_LOWER_CASE_SECTION, exp.isLowerCaseSection()); 045 setBoolean(Config.PROP_MULTI_OPTION, exp.isMultiOption()); 046 setBoolean(Config.PROP_MULTI_SECTION, exp.isMultiSection()); 047 setBoolean(Config.PROP_STRICT_OPERATOR, exp.isStrictOperator()); 048 setBoolean(Config.PROP_UNNAMED_SECTION, exp.isUnnamedSection()); 049 setBoolean(Config.PROP_ESCAPE, exp.isEscape()); 050 setChar(Config.PROP_PATH_SEPARATOR, exp.getPathSeparator()); 051 setBoolean(Config.PROP_TREE, exp.isTree()); 052 setBoolean(Config.PROP_PROPERTY_FIRST_UPPER, exp.isPropertyFirstUpper()); 053 setString(Config.PROP_LINE_SEPARATOR, exp.getLineSeparator()); 054 setCharset(Config.PROP_FILE_ENCODING, exp.getFileEncoding()); 055 setBoolean(Config.PROP_COMMENT, exp.isComment()); 056 setBoolean(Config.PROP_HEADER_COMMENT, exp.isHeaderComment()); 057 Config cfg = new Config(); 058 059 assertEquals(exp, cfg); 060 } 061 062 private void setBoolean(String prop, boolean value) 063 { 064 System.setProperty(Config.KEY_PREFIX + prop, String.valueOf(value)); 065 } 066 067 private void setChar(String prop, char value) 068 { 069 System.setProperty(Config.KEY_PREFIX + prop, String.valueOf(value)); 070 } 071 072 private void setCharset(String prop, Charset value) 073 { 074 System.setProperty(Config.KEY_PREFIX + prop, String.valueOf(value)); 075 } 076 077 private void setString(String prop, String value) 078 { 079 System.setProperty(Config.KEY_PREFIX + prop, value); 080 } 081 082 private void assertEquals(Config exp, Config act) 083 { 084 Assert.assertEquals(exp.isEmptyOption(), act.isEmptyOption()); 085 Assert.assertEquals(exp.isEmptySection(), act.isEmptySection()); 086 Assert.assertEquals(exp.isEscape(), act.isEscape()); 087 Assert.assertEquals(exp.isGlobalSection(), act.isGlobalSection()); 088 Assert.assertEquals(exp.isInclude(), act.isInclude()); 089 Assert.assertEquals(exp.isLowerCaseOption(), act.isLowerCaseOption()); 090 Assert.assertEquals(exp.isLowerCaseSection(), act.isLowerCaseSection()); 091 Assert.assertEquals(exp.isMultiOption(), act.isMultiOption()); 092 Assert.assertEquals(exp.isMultiSection(), act.isMultiSection()); 093 Assert.assertEquals(exp.isStrictOperator(), act.isStrictOperator()); 094 Assert.assertEquals(exp.isUnnamedSection(), act.isUnnamedSection()); 095 Assert.assertEquals(exp.getGlobalSectionName(), act.getGlobalSectionName()); 096 Assert.assertEquals(exp.getPathSeparator(), act.getPathSeparator()); 097 Assert.assertEquals(exp.isTree(), act.isTree()); 098 Assert.assertEquals(exp.isPropertyFirstUpper(), act.isPropertyFirstUpper()); 099 Assert.assertEquals(exp.getLineSeparator(), act.getLineSeparator()); 100 Assert.assertEquals(exp.getFileEncoding(), act.getFileEncoding()); 101 Assert.assertEquals(exp.isComment(), act.isComment()); 102 Assert.assertEquals(exp.isHeaderComment(), act.isHeaderComment()); 103 } 104 105 private Config newDefaultConfig() 106 { 107 Config cfg = new Config(); 108 109 cfg.setEmptyOption(false); 110 cfg.setEmptySection(false); 111 cfg.setEscape(true); 112 cfg.setGlobalSection(false); 113 cfg.setGlobalSectionName("?"); 114 cfg.setInclude(false); 115 cfg.setLowerCaseOption(false); 116 cfg.setLowerCaseSection(false); 117 cfg.setMultiSection(false); 118 cfg.setMultiOption(true); 119 cfg.setStrictOperator(false); 120 cfg.setUnnamedSection(false); 121 cfg.setPathSeparator('/'); 122 cfg.setTree(true); 123 cfg.setPropertyFirstUpper(false); 124 cfg.setLineSeparator(System.getProperty("line.separator")); 125 cfg.setFileEncoding(Charset.forName("UTF-8")); 126 cfg.setComment(true); 127 cfg.setHeaderComment(true); 128 129 return cfg; 130 } 131 132 private Config newInverseConfig() 133 { 134 Config cfg = newDefaultConfig(); 135 136 cfg.setEmptyOption(!cfg.isEmptyOption()); 137 cfg.setEmptySection(!cfg.isEmptySection()); 138 cfg.setEscape(!cfg.isEscape()); 139 cfg.setGlobalSection(!cfg.isGlobalSection()); 140 cfg.setGlobalSectionName("+"); 141 cfg.setInclude(!cfg.isInclude()); 142 cfg.setLowerCaseOption(!cfg.isLowerCaseOption()); 143 cfg.setLowerCaseSection(!cfg.isLowerCaseSection()); 144 cfg.setMultiSection(!cfg.isMultiSection()); 145 cfg.setMultiOption(!cfg.isMultiOption()); 146 cfg.setStrictOperator(!cfg.isStrictOperator()); 147 cfg.setUnnamedSection(!cfg.isUnnamedSection()); 148 cfg.setPathSeparator('?'); 149 cfg.setTree(!cfg.isTree()); 150 cfg.setPropertyFirstUpper(!cfg.isPropertyFirstUpper()); 151 cfg.setComment(!cfg.isComment()); 152 cfg.setHeaderComment(!cfg.isHeaderComment()); 153 154 //cfg.setLineSeparator("\t"); 155 //cfg.setFileEncoding(Charset.forName("ASCII")); 156 return cfg; 157 } 158}