/** * Get the value of property {@code name} as a file object. * * @param name property name. * @param defaultValue default value. * @return property value as a {@code File}, or {@code defaultValue} if * the property does not exist. */ public File getFile(String name, File defaultValue) { final String val = get(name); if (null == val) { return defaultValue; } return new File(val); }
/** * Get the value of property {@code name} as a Boolean. * * @param name property name. * @return property value as a Boolean, or {@code null} if the * property does not exist. * @throws IllegalArgumentException if value does not represent a Boolean. */ public Boolean getBoolean(String name) { return getBoolean(name, null); }
/** * Creates an options object with metadata level set to the * specified value and file validation set to {@link * #READER_VALIDATE_DEFAULT} * * @param level the {@link loci.formats.in.MetadataLevel} to use. */ public DynamicMetadataOptions(MetadataLevel level) { props = new Properties(); setEnum(METADATA_LEVEL_KEY, level); setBoolean(READER_VALIDATE_KEY, READER_VALIDATE_DEFAULT); }
@Test public void testOptionsExplicit() throws Exception { DynamicMetadataOptions opt = new DynamicMetadataOptions(); opt.set(KEY, VALUE); ImageReader reader = new ImageReader(); reader.setMetadataOptions(opt); reader.setId("test.fake"); MetadataOptions rOpt = reader.getReader().getMetadataOptions(); assertTrue(rOpt instanceof DynamicMetadataOptions); String v = ((DynamicMetadataOptions) rOpt).get(KEY); assertNotNull(v); assertEquals(v, VALUE); reader.close(); }
@Test public void testOptionsExplicit() throws IOException, FormatException { DynamicMetadataOptions opt = new DynamicMetadataOptions(); opt.set(KEY, VALUE); FileStitcher fs = new FileStitcher(); fs.setMetadataOptions(opt); fs.setId("test_z<0-2>.fake"); checkKV(fs.getUnderlyingReaders(), KEY, VALUE); DynamicMetadataOptions newOpt = new DynamicMetadataOptions(); String newValue = VALUE + "_"; newOpt.set(KEY, newValue); fs.setMetadataOptions(newOpt); checkKV(fs.getUnderlyingReaders(), KEY, newValue); fs.close(); }
@Test public void testEnum() { assertEquals(opt.getEnum(KEY, One.BAR), One.BAR); opt.setEnum(KEY, One.FOO); assertEquals(opt.getEnum(KEY, One.BAR), One.FOO); assertEquals(opt.getEnum(KEY, Two.TAR), Two.FOO); opt.set(KEY, "TAR"); assertEquals(opt.getEnum(KEY, Two.FOO), Two.TAR); opt.setEnum(KEY, null); assertEquals(opt.getEnum(KEY, Two.FOO), Two.FOO); }
@Test public void testString() { assertNull(opt.get(KEY)); assertNull(opt.get(KEY), null); assertEquals(opt.get(KEY, "default"), "default"); opt.set(KEY, "v"); assertEquals(opt.get(KEY), "v"); assertEquals(opt.get(KEY, null), "v"); assertEquals(opt.get(KEY, "default"), "v"); opt.set(KEY, null); assertNull(opt.get(KEY)); assertNull(opt.get(KEY), null); assertEquals(opt.get(KEY, "default"), "default"); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testBadBoolean() { opt.set(KEY, "foo"); opt.getBoolean(KEY); }
@Test public void testMetadataLevel() { assertEquals(opt.getMetadataLevel(), DynamicMetadataOptions.METADATA_LEVEL_DEFAULT); for (MetadataLevel level: MetadataLevel.values()) { opt.setMetadataLevel(level); assertEquals(opt.getMetadataLevel(), level); assertEquals( (new DynamicMetadataOptions(level)).getMetadataLevel(), level ); } }
@Test public void testFile() { final File f1 = new File("/foo/f1"); final File f2 = new File("/foo/f2"); assertEquals(opt.getFile(KEY, f1), f1); assertNull(opt.getFile(KEY, null)); assertNull(opt.getFile(KEY)); opt.setFile(KEY, f2); assertEquals(opt.getFile(KEY, f1), f2); assertEquals(opt.getFile(KEY, null), f2); assertEquals(opt.getFile(KEY), f2); opt.set(KEY, "/foo/f1"); assertEquals(opt.getFile(KEY, f2), f1); opt.setFile(KEY, null); assertEquals(opt.getFile(KEY, f2), f2); assertNull(opt.getFile(KEY, null)); assertNull(opt.getFile(KEY)); }
@Test public void testClass() throws ClassNotFoundException { final Class<?> c1 = Thread.class; final Class<?> c2 = Number.class; assertEquals(opt.getClass(KEY, c1), c1); assertNull(opt.getClass(KEY, null)); assertNull(opt.getClass(KEY)); opt.setClass(KEY, c2); assertEquals(opt.getClass(KEY, c1), c2); assertEquals(opt.getClass(KEY, null), c2); assertEquals(opt.getClass(KEY), c2); opt.set(KEY, "java.lang.Thread"); assertEquals(opt.getClass(KEY, c2), c1); opt.setClass(KEY, null); assertEquals(opt.getClass(KEY, c2), c2); assertNull(opt.getClass(KEY, null)); assertNull(opt.getClass(KEY)); }
@BeforeMethod public void setUp() { opt = new DynamicMetadataOptions(); }
@Test(expectedExceptions = NumberFormatException.class) public void testBadInt() { opt.set(KEY, "2147483648"); opt.getInteger(KEY); }
@Test public void testBoolean() { assertFalse(opt.getBoolean(KEY, false)); assertTrue(opt.getBoolean(KEY, true)); assertNull(opt.getBoolean(KEY, null)); assertNull(opt.getBoolean(KEY)); opt.setBoolean(KEY, false); assertFalse(opt.getBoolean(KEY, true)); assertFalse(opt.getBoolean(KEY, null)); assertFalse(opt.getBoolean(KEY)); opt.setBoolean(KEY, true); assertTrue(opt.getBoolean(KEY, false)); assertTrue(opt.getBoolean(KEY, null)); assertTrue(opt.getBoolean(KEY)); opt.setBoolean(KEY, null); assertFalse(opt.getBoolean(KEY, false)); assertTrue(opt.getBoolean(KEY, true)); assertNull(opt.getBoolean(KEY, null)); assertNull(opt.getBoolean(KEY)); }
@Override public void setValidate(boolean validateMetadata) { setBoolean(READER_VALIDATE_KEY, validateMetadata); }