[LIB-9] Separate chesshog-core module
[chesshog.git] / chesshog-core / src / test / java / org / hedgecode / chess / AbstractXMLConfigTest.java
diff --git a/chesshog-core/src/test/java/org/hedgecode/chess/AbstractXMLConfigTest.java b/chesshog-core/src/test/java/org/hedgecode/chess/AbstractXMLConfigTest.java
new file mode 100644 (file)
index 0000000..e27274a
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2018. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.chess;
+
+import java.io.File;
+
+import org.apache.commons.configuration.XMLConfiguration;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Abstract Test class with input params from XML file.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public abstract class AbstractXMLConfigTest extends Assert {
+
+    private static final String RESOURCES_ROOT = "/";
+    private static final String XML_EXT = ".xml";
+
+    protected static final String CONFIG = "config";
+    protected static final String TESTS = "tests.test";
+
+    @Test
+    public void testXML() throws Exception {
+        XMLConfiguration xmlConfig = getXMLConfig();
+        assertTrue(
+                CONFIG.equals(xmlConfig.getRoot().getName())
+        );
+        assertTrue(
+                xmlConfig.configurationsAt(TESTS).size() > 0
+        );
+    }
+
+    protected abstract String getConfigName();
+
+    protected XMLConfiguration getXMLConfig() throws Exception {
+        String xmlConfigName = getConfigName() + XML_EXT;
+        return new XMLConfiguration(
+                getResourceFile(
+                        xmlConfigName
+                )
+        );
+    }
+
+    protected XMLConfiguration getDefXMLConfig() throws Exception {
+        return new XMLConfiguration(
+                getResourceFile(
+                        getClass().getSimpleName() + XML_EXT
+                )
+        );
+    }
+
+    private File getResourceFile(String name) throws Exception {
+        if (getClass().getResource(name) != null)
+            return new File(
+                    getClass().getResource(name).toURI()
+            );
+        return new File(
+                getClass().getResource(RESOURCES_ROOT).getPath() + name
+        );
+    }
+
+}
\ No newline at end of file