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.spi;
017
018 import org.ini4j.Ini4jCase;
019
020 import org.ini4j.test.Helper;
021
022 import static org.junit.Assert.assertEquals;
023 import static org.junit.Assert.assertNull;
024 import static org.junit.Assert.assertTrue;
025
026 import org.junit.Test;
027
028 public class ServiceFinderTest extends Ini4jCase
029 {
030 static final String DUMMY = "dummy";
031 static final String DUMMY_SERVICE = "org.ini4j.Dummy";
032 static final String BAD_CONFIG_SERVICE = "org.ini4j.BadConfig";
033 static final String EMPTY_CONFIG_SERVICE = "org.ini4j.EmptyConfig";
034 static final String DUMMY_IMPL = "DummyImpl";
035
036 @Test public void testFindService() throws Exception
037 {
038 boolean flag = false;
039
040 System.setProperty(IniParser.class.getName(), Helper.class.getName());
041 try
042 {
043 ServiceFinder.findService(IniParser.class);
044 }
045 catch (IllegalArgumentException x)
046 {
047 flag = true;
048 }
049
050 // System.clearProperty(IniParser.SERVICE_ID); missing in 1.4
051 System.getProperties().remove(IniParser.class.getName());
052 assertTrue(flag);
053 }
054
055 @Test public void testFindServiceClass() throws Exception
056 {
057 boolean flag = false;
058
059 System.setProperty(IniParser.class.getName(), DUMMY);
060 try
061 {
062 ServiceFinder.findServiceClass(IniParser.class);
063 }
064 catch (IllegalArgumentException x)
065 {
066 flag = true;
067 }
068
069 // System.clearProperty(IniParser.SERVICE_ID); missing in 1.4
070 System.getProperties().remove(IniParser.class.getName());
071 assertTrue(flag);
072 }
073
074 @Test public void testFindServiceClassName() throws Exception
075 {
076 System.setProperty(IniParser.class.getName(), DUMMY);
077 assertEquals(DUMMY, ServiceFinder.findServiceClassName(IniParser.class.getName()));
078
079 // System.clearProperty(IniParser.SERVICE_ID); missing in 1.4
080 System.getProperties().remove(IniParser.class.getName());
081 assertNull(ServiceFinder.findServiceClassName(IniParser.class.getName()));
082 assertEquals(DUMMY_IMPL, ServiceFinder.findServiceClassName(DUMMY_SERVICE));
083 assertNull(DUMMY, ServiceFinder.findServiceClassName(BAD_CONFIG_SERVICE));
084 assertNull(DUMMY, ServiceFinder.findServiceClassName(EMPTY_CONFIG_SERVICE));
085 }
086 }