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.spi; 017 018import org.ini4j.Ini4jCase; 019 020import static org.junit.Assert.assertEquals; 021import static org.junit.Assert.assertNull; 022 023import org.junit.Before; 024import org.junit.Test; 025 026public class EscapeToolTest extends Ini4jCase 027{ 028 private static final String VALUE1 = "simple"; 029 private static final String ESCAPE1 = "simple"; 030 private static final String VALUE2 = "Iv\ufffdn"; 031 private static final String ESCAPE2 = "Iv\\ufffdn"; 032 private static final String VALUE3 = "1\t2\n3\f4\b5\r6"; 033 private static final String ESCAPE3 = "1\\t2\\n3\\f4\\b5\\r6"; 034 private static final String VALUE4 = "Iv\u0017n"; 035 private static final String ESCAPE4 = "Iv\\u0017n"; 036 private static final String INVALID_UNICODE = "\\u98x"; 037 private static final String UNQUOTED1 = "simple"; 038 private static final String QUOTED1 = "\"simple\""; 039 private static final String UNQUOTED2 = "no\\csak\""; 040 private static final String QUOTED2 = "\"no\\\\csak\\\"\""; 041 private static final String UNQUOTED3 = ""; 042 private static final String QUOTED3 = ""; 043 protected EscapeTool instance; 044 045 @Before @Override public void setUp() throws Exception 046 { 047 super.setUp(); 048 instance = EscapeTool.getInstance(); 049 } 050 051 @Test public void testEscape() throws Exception 052 { 053 assertEquals(ESCAPE1, instance.escape(VALUE1)); 054 assertEquals(ESCAPE2, instance.escape(VALUE2)); 055 assertEquals(ESCAPE3, instance.escape(VALUE3)); 056 assertEquals(ESCAPE4, instance.escape(VALUE4)); 057 } 058 059 @Test public void testInvalidUnicode() 060 { 061 try 062 { 063 instance.unescape(INVALID_UNICODE); 064 missing(IllegalArgumentException.class); 065 } 066 catch (IllegalArgumentException x) 067 { 068 // 069 } 070 } 071 072 @Test public void testQuote() throws Exception 073 { 074 assertEquals(QUOTED1, instance.quote(UNQUOTED1)); 075 assertEquals(QUOTED2, instance.quote(UNQUOTED2)); 076 assertEquals(QUOTED3, instance.quote(UNQUOTED3)); 077 assertNull(instance.quote(null)); 078 } 079 080 @Test public void testSingleton() throws Exception 081 { 082 assertEquals(EscapeTool.class, EscapeTool.getInstance().getClass()); 083 } 084 085 @SuppressWarnings("empty-statement") 086 @Test public void testUnescape() throws Exception 087 { 088 assertEquals(VALUE1, instance.unescape(ESCAPE1)); 089 assertEquals(VALUE2, instance.unescape(ESCAPE2)); 090 assertEquals(VALUE3, instance.unescape(ESCAPE3)); 091 assertEquals(VALUE4, instance.unescape(ESCAPE4)); 092 assertEquals("=", instance.unescape("\\=")); 093 } 094}