/** * This file is part of muCommander, http://www.mucommander.com * Copyright (C) 2002-2016 Maxence Bernard * * muCommander is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * muCommander 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.mucommander.xml; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.Iterator; /** * Runs test on the {@link XmlAttributes} class. * @author Nicolas Rinaudo */ public class XmlAttributesTest { // - Test constants ------------------------------------------------------------------------------------------------ // ----------------------------------------------------------------------------------------------------------------- /** Name of the first test attribute. */ private static final String TEST_ATTRIBUTE_1 = "attribute1"; /** Name of the second test attribute. */ private static final String TEST_ATTRIBUTE_2 = "attribute2"; /** First value of the test attribute. */ private static final String TEST_VALUE_1 = "value1"; /** Second value of the test attribute. */ private static final String TEST_VALUE_2 = "value2"; // - Instance fields ----------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------------- /** Instance used to test the XmlAttributes class. */ private XmlAttributes attributes; // - Initialisation ------------------------------------------------------------------------------------------------ // ----------------------------------------------------------------------------------------------------------------- /** * Initialises the test case. */ @BeforeMethod public void setUp() { attributes = new XmlAttributes(); } // - Test code ----------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------------- /** * Runs the basic tests. */ @Test public void testAttributes() { // Makes sure an attribute that has been added is properly retrieved. attributes.add(TEST_ATTRIBUTE_1, TEST_VALUE_1); assert TEST_VALUE_1.equals(attributes.getValue(TEST_ATTRIBUTE_1)); // Makes sure an attribute that has been overwritten is properly retrieved. attributes.add(TEST_ATTRIBUTE_1, TEST_VALUE_2); assert TEST_VALUE_2.equals(attributes.getValue(TEST_ATTRIBUTE_1)); // Makes sure the clear method works. attributes.clear(); assert attributes.getValue(TEST_ATTRIBUTE_1) == null; } /** * Runs tests on the {@link XmlAttributes#names()} method. */ @Test public void testNames() { Iterator<String> names; String buffer; // Makes sure the names method works on an empty set of attributes. names = attributes.names(); assert !names.hasNext(); // Makes sure the names method works on a set of attributes that only contains // one element. attributes.add(TEST_ATTRIBUTE_1, TEST_VALUE_1); names = attributes.names(); assert names.hasNext(); buffer = names.next(); assert TEST_ATTRIBUTE_1.equals(buffer); assert TEST_VALUE_1.equals(attributes.getValue(buffer)); assert !names.hasNext(); // Makes sure the names method works on a set of attributes that contains more // than one element. attributes.add(TEST_ATTRIBUTE_2, TEST_VALUE_2); names = attributes.names(); assert names.hasNext(); checkAttribute(names.next()); assert names.hasNext(); checkAttribute(names.next()); assert !names.hasNext(); // Makes sure the iterator is read-only. names = attributes.names(); try { names.remove(); throw new AssertionError(); } catch(Exception e) {} } /** * Makes sure the specified attribute name has the right value. */ private void checkAttribute(String name) { if(name.equals(TEST_ATTRIBUTE_1)) assert TEST_VALUE_1.equals(attributes.getValue(TEST_ATTRIBUTE_1)); else if(name.equals(TEST_ATTRIBUTE_2)) assert TEST_VALUE_2.equals(attributes.getValue(TEST_ATTRIBUTE_2)); else throw new AssertionError(); } }