/*******************************************************************************
* Copyright (c) 2007-2009, A. Kaufmann and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* A. Kaufmann - initial implementation
* P. Chaubert - adapted to Messwerte V2
* medshare GmbH - adapted to Messwerte V2.1 in February 2012
*
*******************************************************************************/
package com.hilotec.elexis.messwerte.v2_test.data;
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 java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import org.eclipse.ui.PlatformUI;
import org.junit.AfterClass;
import org.junit.Test;
import ch.elexis.core.data.util.PlatformHelper;
import com.hilotec.elexis.messwerte.v2.data.MessungKonfiguration;
import com.hilotec.elexis.messwerte.v2.data.MessungTyp;
import com.hilotec.elexis.messwerte.v2.data.typen.IMesswertTyp;
public class MessungKonfigurationTest {
private static String TEST_XML = "rsc/messwerte_test.xml";
private static String THIS_DESCR = "MessungKonfigurationTest: ";
private static String TC1_BOOL_TRUE = "tc1_bool_true";
private static String TC1_BOOL_FALSE = "tc1_bool_false";
private static String TC1_CALC = "tc1_calc_error";
private static String TC1_DATE = "tc1_date_20120129";
private static String TC1_ENUM = "tc1_enum_BE";
private static String TC1_NUM = "tc1_num_324";
private static String TC1_SCALE = "tc1_scale_17";
private static String TC1_STR = "tc1_str_hilotec";
private static String TC2_BOOL = "tc2_bool";
private static String TC2_CALC = "tc2_calc";
private static String TC2_DATE = "tc2_date";
private static String TC2_ENUM = "tc2_enum";
private static String TC2_NUM = "tc2_num";
private static String TC2_SCALE = "tc2_scale";
private static String TC2_STR = "tc2_str";
private static String TC3_BOOL = "tc3_bool";
private static String TC3_CALC = "tc3_calc";
private static String TC3_DATE = "tc3_date";
private static String TC3_ENUM = "tc3_enum";
private static String TC3_NUM = "tc3_num";
private static String TC3_SCALE = "tc3_scale";
private static String TC3_STR = "tc3_str";
@Test
public void testReadFromXML(){
try {
String testXML =
PlatformHelper.getBasePath("com.hilotec.elexis.messwerte.v2_test") + File.separator
+ TEST_XML;
System.out.println(testXML);
MessungKonfiguration testConfig = MessungKonfiguration.getInstance();
assertFalse("read eines nicht existierenden files darf nicht true zurückgeben...",
testConfig.readFromXML("dummy.xml"));
ArrayList<MessungTyp> dataTypes = testConfig.getTypes();
dataTypes.clear();
assertTrue("test xml '" + testXML + "' kann nicht initialisiert werden",
testConfig.readFromXML(testXML));
for (int i = 0; i < dataTypes.size(); i++) {
MessungTyp datatype = dataTypes.get(i);
test_datatype(datatype);
System.out.println(THIS_DESCR + "Teste datatype " + datatype.getName());
ArrayList<IMesswertTyp> messwertTypes = dataTypes.get(i).getMesswertTypen();
for (int j = 0; j < messwertTypes.size(); j++) {
IMesswertTyp messWertTyp = messwertTypes.get(j);
String messWertTypName = messWertTyp.getName();
System.out.println(THIS_DESCR + "Teste datatype " + dataTypes.get(i).getName()
+ ", " + messWertTypName + " (Typ: "
+ messwertTypes.get(j).getClass().getName() + ")");
// teste einzelne Datentypen
if ("".equals(messWertTypName)) {
fail("messWertName darf nicht leer sein");
}
// Bool Defaultwert
else if (TC1_BOOL_TRUE.equals(messWertTypName)) {
assertEquals(TC1_BOOL_TRUE + ": Falscher Titel für messWertTyp "
+ messWertTyp.getName(), "Bool default true", messWertTyp.getTitle());
assertTrue(TC1_BOOL_TRUE + ": Defaulwert falsch",
Boolean.parseBoolean(messWertTyp.getDefault(null)));
} else if (TC1_BOOL_FALSE.equals(messWertTypName)) {
assertTrue(TC1_BOOL_TRUE + ": Defaulwert falsch",
!Boolean.parseBoolean(messWertTyp.getDefault(null)));
}
// Bool berechnet aus Formel
else if (TC2_BOOL.equals(messWertTypName)) {
assertTrue(TC2_BOOL + ": Berechneter Wert falsch",
Boolean.parseBoolean(messWertTyp.getDefault(null)));
}
// Bool Defaultwert weil Formel Exception wirft
else if (TC3_BOOL.equals(messWertTypName)) {
assertTrue(TC3_BOOL + ": Berechneter Wert falsch",
!Boolean.parseBoolean(messWertTyp.getDefault(null)));
}
// Calc Defaultwert
else if (TC1_CALC.equals(messWertTypName)) {
System.out.println(THIS_DESCR + "TC1_CALC Default: "
+ messWertTyp.getDefault(null));
assertEquals(
TC1_CALC + ": Falscher Titel für messWertTyp " + messWertTyp.getName(),
"Calc default error", messWertTyp.getTitle());
assertEquals(TC1_CALC + ": Default Wert falsch", "error",
messWertTyp.getDefault(null));
}
// Calc berechnet aus Formel
else if (TC2_CALC.equals(messWertTypName)) {
assertEquals(TC2_CALC + ": Berechneter Wert falsch", 150,
Integer.parseInt(messWertTyp.getDefault(null)));
}
// Calc Defaultwert weil Formel Exception wirft
else if (TC3_CALC.equals(messWertTypName)) {
assertEquals(TC3_CALC + ": Default Wert falsch", "exc",
messWertTyp.getDefault(null));
}
// Counterfield
// TC3
// Datafield
// TC3
// Date Defaultwert
else if (TC1_DATE.equals(messWertTypName)) {
System.out.println(THIS_DESCR + "TEST_DATE Default: "
+ messWertTyp.getDefault(null));
assertEquals(
TC1_DATE + ": Falscher Titel für messWertTyp " + messWertTyp.getName(),
"Date default 29.01.2012", messWertTyp.getTitle());
assertTrue(TC1_DATE + ": Defaulwert falsch",
"29.01.2012".equals(messWertTyp.getDefault(null)));
}
// Date berechnet aus Formel
else if (TC2_DATE.equals(messWertTypName)) {
ch.rgw.tools.TimeTool yesterday = new ch.rgw.tools.TimeTool();
yesterday.addDays(-1);
String ist = new SimpleDateFormat("dd.MM.yyyy").format(yesterday.getTime());
String soll =
new SimpleDateFormat("dd.MM.yyyy").format(new ch.rgw.tools.TimeTool(
messWertTyp.getDefault(null)).getTime());
assertEquals(TC2_DATE + ": Berechneter Wert falsch", soll, ist);
}
// Date Defaultwert weil Formel Exception wirft
else if (TC3_DATE.equals(messWertTypName)) {
assertTrue(TC3_DATE + ": Defaulwert falsch",
"11.11.2011".equals(messWertTyp.getDefault(null)));
}
// Enum Defaultwert
else if (TC1_ENUM.equals(messWertTypName)) {
System.out.println(THIS_DESCR + "TEST_ENUM Default: "
+ messWertTyp.getDefault(null).toString());
assertEquals(
TC1_ENUM + ": Falscher Titel für messWertTyp " + messWertTyp.getName(),
"Enum default BE", messWertTyp.getTitle());
assertTrue(TC1_ENUM + ": Defaulwert falsch",
"2".equals(messWertTyp.getDefault(null)));
}
// Enum berechnet aus Formel
else if (TC2_ENUM.equals(messWertTypName)) {
assertEquals(TC2_ENUM + ": Berechneter Wert falsch", 3,
Integer.parseInt(messWertTyp.getDefault(null)));
}
// Enum Defaultwert weil Formel Exception wirft
else if (TC3_ENUM.equals(messWertTypName)) {
assertTrue(TC3_ENUM + ": Defaulwert falsch",
"2".equals(messWertTyp.getDefault(null)));
}
// Num Defaultwert
else if (TC1_NUM.equals(messWertTypName)) {
System.out.println(THIS_DESCR + "TEST_NUM Default: "
+ messWertTyp.getDefault(null));
assertEquals(
TC1_NUM + ": Falscher Titel für messWertTyp " + messWertTyp.getName(),
"Num default 3.24", messWertTyp.getTitle());
assertTrue(TC1_NUM + ": Defaulwert falsch",
"3.24".equals(messWertTyp.getDefault(null)));
}
// Num berechnet aus Formel
else if (TC2_NUM.equals(messWertTypName)) {
assertEquals(TC2_NUM + ": Berechneter Wert falsch", "2.87",
messWertTyp.getDefault(null));
}
// Num Defaultwert weil Formel Exception wirft
else if (TC3_NUM.equals(messWertTypName)) {
assertTrue(TC3_NUM + ": Defaulwert falsch",
"3.24".equals(messWertTyp.getDefault(null)));
}
// Scale Defaultwert
else if (TC1_SCALE.equals(messWertTypName)) {
System.out.println(THIS_DESCR + "TC1_SCALE Default: "
+ messWertTyp.getDefault(null));
assertEquals(
TC1_SCALE + ": Falscher Titel für messWertTyp " + messWertTyp.getName(),
"Scale default 17", messWertTyp.getTitle());
assertTrue(TC1_SCALE + ": Defaulwert falsch",
"17".equals(messWertTyp.getDefault(null)));
}
// Scale berechnet aus Formel
else if (TC2_SCALE.equals(messWertTypName)) {
assertEquals(TC2_SCALE + ": Berechneter Wert falsch", "92",
messWertTyp.getDefault(null));
}
// Scale Defaultwert weil Formel Exception wirft
else if (TC3_SCALE.equals(messWertTypName)) {
assertTrue(TC3_SCALE + ": Defaulwert falsch",
"17".equals(messWertTyp.getDefault(null)));
}
// Str Defaultwert
else if (TC1_STR.equals(messWertTypName)) {
System.out.println(THIS_DESCR + "TC1_STR Default: "
+ messWertTyp.getDefault(null));
assertEquals(
TC1_STR + ": Falscher Titel für messWertTyp " + messWertTyp.getName(),
"Str default Hilotec", messWertTyp.getTitle());
assertTrue(TC1_STR + ": Defaulwert falsch",
"Hilotec".equals(messWertTyp.getDefault(null)));
}
// String berechnet aus Formel
else if (TC2_STR.equals(messWertTypName)) {
assertEquals(TC2_SCALE + ": Berechneter Wert falsch", "medshare",
messWertTyp.getDefault(null));
}
// String Defaultwert weil Formel Exception wirft
else if (TC3_STR.equals(messWertTypName)) {
assertTrue(TC3_STR + ": Defaulwert falsch",
"Hilotec".equals(messWertTyp.getDefault(null)));
}
}
}
} catch (Exception e) {
fail("Genereller Fehler: " + e.getMessage());
}
}
// einzelne Tests für Datentypen
private void test_datatype(MessungTyp datatype){
//
if ("tc1".equals(datatype.getName())) {
assertEquals("Falscher Titel für datatype " + datatype.getName(), "Testcase 1",
datatype.getTitle());
assertEquals("Falsche Description für datatype " + datatype.getName(),
"Default Values für alle Datentypen", datatype.getDescription());
}
}
@AfterClass
public static void teardown() throws Exception{
PlatformUI.getWorkbench().saveAllEditors(false); // do not confirm saving
PlatformUI.getWorkbench().saveAll(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), PlatformUI.getWorkbench().getActiveWorkbenchWindow(), null, false);
if (PlatformUI.getWorkbench() != null) // null if run from Eclipse-IDE
{
// needed if run as surefire test from using mvn install
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllPerspectives(false, true);
}
}
}