/* * #%L * Bio-Formats Plugins for ImageJ: a collection of ImageJ plugins including the * Bio-Formats Importer, Bio-Formats Exporter, Bio-Formats Macro Extensions, * Data Browser and Stack Slicer. * %% * Copyright (C) 2006 - 2015 Open Microscopy Environment: * - Board of Regents of the University of Wisconsin-Madison * - Glencoe Software, Inc. * - University of Dundee * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-2.0.html>. * #L% */ package loci.plugins.in; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import ij.Macro; import java.io.IOException; import org.junit.Test; /** * Test to ensure that old macro keys (pre-4.2) are still handled correctly. * * @author Melissa Linkert melissa at glencoesoftware.com */ public class MacroTest { // -- Constants -- private static final String OLD_MERGE = "merge_channels view=Hyperstack stack_order=XYCZT "; private static final String NEW_MERGE = "color_mode=Composite view=Hyperstack stack_order=XYCZT "; private static final String OLD_AUTO_COLORIZE = "rgb_colorize view=Hyperstack stack_order=XYCZT "; private static final String NEW_AUTO_COLORIZE = "color_mode=Colorized view=Hyperstack stack_order=XYCZT "; private static final String OLD_CUSTOM_COLORIZE = "custom_colorize view=Hyperstack stack_order=XYCZT " + "series_0_channel_0_red=231 series_0_channel_0_green=100 " + "series_0_channel_0_blue=136 series_0_channel_1_red=143 " + "series_0_channel_1_green=214 series_0_channel_1_blue=100 " + "series_0_channel_2_red=240 series_0_channel_2_green=200 " + "series_0_channel_2_blue=120 "; private static final String NEW_CUSTOM_COLORIZE = "color_mode=Custom view=Hyperstack stack_order=XYCZT " + "series_0_channel_0_red=231 series_0_channel_0_green=100 " + "series_0_channel_0_blue=136 series_0_channel_1_red=143 " + "series_0_channel_1_green=214 series_0_channel_1_blue=100 " + "series_0_channel_2_red=240 series_0_channel_2_green=200 " + "series_0_channel_2_blue=120 "; private static final String COMPOSITE_MODE = "color_mode=Composite "; private static final String COLORIZED_MODE = "color_mode=Colorized "; // -- MacroTest methods -- @Test public void testMergeChannels() { ImporterOptions oldOptions = getOptions(OLD_MERGE); ImporterOptions newOptions = getOptions(NEW_MERGE); assertEquals(oldOptions, newOptions); } @Test public void testAutoColorizeChannels() { ImporterOptions oldOptions = getOptions(OLD_AUTO_COLORIZE); ImporterOptions newOptions = getOptions(NEW_AUTO_COLORIZE); assertEquals(oldOptions, newOptions); } @Test public void testCustomColorizeChannels() { ImporterOptions oldOptions = getOptions(OLD_CUSTOM_COLORIZE); ImporterOptions newOptions = getOptions(NEW_CUSTOM_COLORIZE); assertEquals(oldOptions, newOptions); } @Test public void testDisjointColorModes() { ImporterOptions composite = getOptions(COMPOSITE_MODE); ImporterOptions colorized = getOptions(COLORIZED_MODE); assertFalse(composite.equals(colorized)); assertEquals(composite.getColorMode(), "Composite"); assertEquals(colorized.getColorMode(), "Colorized"); } @Test public void testEqualMacros() { ImporterOptions compositeA = getOptions(COMPOSITE_MODE); ImporterOptions compositeB = getOptions(COMPOSITE_MODE); assertEquals(compositeA, compositeB); assertEquals(compositeA.getColorMode(), "Composite"); assertEquals(compositeB.getColorMode(), "Composite"); } // -- Helper methods -- private ImporterOptions getOptions(String macro) { // Manually set the current thread's name, so that Macro.setOptions and // Macro.getOptions will behave as expected. See the implementation of // Macro.getOptions() for more information. Thread current = Thread.currentThread(); current.setName("Run$_" + current.getName()); try { Macro.setOptions(macro); ImporterOptions options = new ImporterOptions(); options.parseArg(macro); options.checkObsoleteOptions(); return options; } catch (IOException e) { fail(e.getMessage()); } return null; } }