/* * $Id$ * * Copyright 2009 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.formats.utests; import static org.testng.AssertJUnit.*; import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.prefs.Preferences; import loci.common.Location; import ome.formats.OMEROMetadataStoreClient; import ome.formats.importer.ImportCandidates; import ome.formats.importer.ImportConfig; import ome.formats.importer.ImportFixture; import ome.formats.importer.ImportLibrary; import ome.formats.importer.OMEROWrapper; import ome.formats.importer.util.IniFileLoader; import omero.util.TempFileManager; import org.apache.commons.io.FileUtils; import org.slf4j.LoggerFactory; import org.ini4j.IniFile; import org.ini4j.IniFile.Mode; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * Various configuration workflows * * @author Josh Moore, josh at glencoesoftware.com * @see ImportFixture * @see ImportReader * @see ImportConfig * @see ImportLibrary * @see ImportCandidates * @see OMEROWrapper * @see OMEROMetadataStoreClient * * @since Beta4.1 */ public class IniFileLoaderTest { private IniFileLoader ini; private Preferences maps; private File temporaryFile; private static final String[] data = new String[] { "\\\\hostname1\\path1; \\\\hostname2\\path2", "\\\\hostname1\\path1; \\\\hostname2\\path2 ", " \\\\hostname1\\path1; \\\\hostname2\\path2", " \\\\hostname1\\path1; \\\\hostname2\\path2 ", " \\\\hostname1\\path1;\\\\hostname2\\path2 ", " /hostname1/path1;\\\\hostname2\\path2 ", " /hostname1/path1;\\\\hostname2\\path2 ", " /hostname1/path1 ; \\\\hostname2\\path2 ", "/hostname1/path1 ; \\\\hostname2\\path2" }; @BeforeMethod public void setUp() throws Exception { temporaryFile = TempFileManager.create_path("initest"); System.err.println("Temporary file: " + temporaryFile.getAbsolutePath()); ini = new IniFileLoader(null); maps = Preferences.userNodeForPackage(getClass()); } @AfterMethod public void tearDown() throws Exception { temporaryFile.delete(); } protected void assertMaps(Map<String, List<String>> rv) { assertEquals(1, rv.size()); List<String> list = rv.get("A"); assertEquals(2, list.size()); String first = list.get(0); if (!"\\\\hostname1\\path1".equals(first) && !"/hostname1/path1".equals(first)) { fail(String.format("%s does not equal %s or %s", first, "\\\\hostname1\\path1", "/hostname1/path1")); } assertEquals("\\\\hostname2\\path2", list.get(1)); } @Test public void testFlexReaderServerMapUNC() throws Exception { FileUtils.writeLines(temporaryFile, Arrays.asList( "[FlexReaderServerMaps]", "CIA-1=\\\\\\\\hostname1\\\\path1;\\\\\\\\hostname1\\\\path2")); Preferences test = new IniFile(temporaryFile, Mode.RW); Preferences maps = test.node("FlexReaderServerMaps"); Map<String, List<String>> parsedMaps = ini.parseFlexMaps(maps); assertEquals(1, parsedMaps.size()); List<String> serverPaths = parsedMaps.get("CIA-1"); assertEquals(2, serverPaths.size()); assertEquals("\\\\hostname1\\path1", serverPaths.get(0)); assertEquals("\\\\hostname1\\path2", serverPaths.get(1)); } @Test public void testFlexReaderServerMapUnix() throws Exception { FileUtils.writeLines(temporaryFile, Arrays.asList( "[FlexReaderServerMaps]", "CIA-1=/mnt/path1;/mnt/path2")); Preferences test = new IniFile(temporaryFile, Mode.RW); Preferences maps = test.node("FlexReaderServerMaps"); Map<String, List<String>> parsedMaps = ini.parseFlexMaps(maps); assertEquals(1, parsedMaps.size()); List<String> serverPaths = parsedMaps.get("CIA-1"); assertEquals(2, serverPaths.size()); assertEquals("/mnt/path1", serverPaths.get(0)); assertEquals("/mnt/path2", serverPaths.get(1)); } @Test public void testAllData() throws Exception { for (String item : data) { maps.put("A",item); assertMaps(ini.parseFlexMaps(maps)); } } @Test public void testDuplicatedSections() throws Exception { FileUtils.writeLines(temporaryFile, Arrays.asList( "[Section]", "A=1", "[Section]", "A=2")); Preferences test = new IniFile(temporaryFile, Mode.RW); String a1 = test.node("Section").get("A", "missing"); assertEquals("2",a1); } @Test public void testDuplicatedSections2() throws Exception { FileUtils.writeLines(temporaryFile, Arrays.asList( "[Section]", "[Section]", "A=1")); Preferences test = new IniFile(temporaryFile, Mode.RW); String a1 = test.node("Section").get("A", "missing"); assertEquals("1",a1); } @Test public void testLocation() throws Exception { ch.qos.logback.classic.Logger lociLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("loci"); lociLogger.setLevel(ch.qos.logback.classic.Level.DEBUG); Location loc = new Location("/"); assertTrue(loc.exists()); } }