/*
* component: "openEHR Reference Implementation"
* description: "Class SimpleTerminologyAccessTest"
* keywords: "terminology"
*
* author: "Rong Chen <rong.acode@gmail.com>"
* copyright: "Copyright (c) 2007 Rong Chen"
* license: "See notice at bottom of class"
*
* file: "$URL$"
* revision: "$LastChangedRevision$"
* last_change: "$LastChangedDate$"
*/
package org.openehr.terminology;
import java.util.*;
import org.openehr.rm.datatypes.text.CodePhrase;
import org.openehr.rm.support.terminology.TerminologyAccess;
import junit.framework.TestCase;
public class SimpleTerminologyAccessTest extends TestCase {
public void setUp() {
instance = new SimpleTerminologyAccess(TEST_ID);
Map<String, String> names = new HashMap<String, String>();
names.put(LANG1, LANG1_GROUP1_NAME);
names.put(LANG2, LANG2_GROUP1_NAME);
((SimpleTerminologyAccess) instance).addGroup(GROUP1_ID,
Arrays.asList(GROUP1_CODES), names);
names.clear();
names.put(LANG1, LANG1_GROUP2_NAME);
names.put(LANG2, LANG2_GROUP2_NAME);
((SimpleTerminologyAccess) instance).addGroup(GROUP2_ID,
Arrays.asList(GROUP2_CODES), names);
for(int i = 0; i < GROUP1_RUBRICS_EN.length; i++) {
((SimpleTerminologyAccess) instance).addRubric(
LANG1, GROUP1_CODES[i], GROUP1_RUBRICS_EN[i]);
}
}
public void tearDown() {
instance = null;
}
public void testGetId() {
assertEquals("id wrong", TEST_ID, instance.id());
}
public void testGetAllCodes() {
Set<CodePhrase> codes = new HashSet<CodePhrase>();
for(String c : GROUP1_CODES) {
codes.add(new CodePhrase(TEST_ID, c));
}
for(String c : GROUP2_CODES) {
codes.add(new CodePhrase(TEST_ID, c));
}
assertEquals("allCodes wrong", codes, instance.allCodes());
}
public void testGetCodesForGroupIdWithAllValidIds() {
Set<CodePhrase> codes = new HashSet<CodePhrase>();
for(String c : GROUP1_CODES) {
codes.add(new CodePhrase(TEST_ID, c));
}
assertEquals("group1 codes wrong", codes,
instance.codesForGroupId(GROUP1_ID));
codes.clear();
for(String c : GROUP2_CODES) {
codes.add(new CodePhrase(TEST_ID, c));
}
assertEquals("group2 codes wrong", codes,
instance.codesForGroupId(GROUP2_ID));
}
public void testGetCodesForGroup1NameWithTwoLanguages() {
Set<CodePhrase> codes = new HashSet<CodePhrase>();
for(String c : GROUP1_CODES) {
codes.add(new CodePhrase(TEST_ID, c));
}
assertEquals("group1 codes wrong", codes,
instance.codesForGroupName(LANG1_GROUP1_NAME, LANG1));
assertEquals("group1 codes wrong", codes,
instance.codesForGroupName(LANG2_GROUP1_NAME, LANG2));
}
public void testGetCodesForGroup2NameWithTwoLanguages() {
Set<CodePhrase> codes = new HashSet<CodePhrase>();
for(String c : GROUP2_CODES) {
codes.add(new CodePhrase(TEST_ID, c));
}
assertEquals("group2 codes wrong", codes,
instance.codesForGroupName(LANG1_GROUP2_NAME, LANG1));
assertEquals("group2 codes wrong", codes,
instance.codesForGroupName(LANG2_GROUP2_NAME, LANG2));
}
public void testGetRubricForCodeWithExistingLangCode() {
String code = "code1";
String rubric = instance.rubricForCode(code, "en");
String expected = "rubric1_en";
assertEquals("rubric wrong for code " + code, expected, rubric);
}
public void testGetRubricForCodeWithNoneExistingLang() {
String code = "code1";
String rubric = instance.rubricForCode(code, "zh");
String expected = null;
assertEquals("rubric wrong for code " + code, expected, rubric);
}
public void testGetRubricForCodeWithNoneExistingCode() {
String code = "code6";
String rubric = instance.rubricForCode(code, "en");
String expected = null;
assertEquals("rubric wrong for code " + code, expected, rubric);
}
public void testhasCodeForGroupId() {
for(String code : GROUP1_CODES) {
CodePhrase codePhrase = new CodePhrase(TEST_ID, code);
assertTrue("code: " + code + " missing from " + GROUP1_ID,
instance.hasCodeForGroupId(GROUP1_ID, codePhrase));
}
}
/* test fixture */
private static final String TEST_ID = "test_id";
private static final String LANG1 = "en";
private static final String LANG2 = "fr";
private static final String[] GROUP1_CODES = {
"code1", "code2", "code3"
};
private static final String[] GROUP1_RUBRICS_EN = {
"rubric1_en", "rubric2_en", "rubric3_en"
};
private static final String[] GROUP2_CODES = {
"code4", "code5"
};
private static final String LANG1_GROUP1_NAME = "group1_en";
private static final String LANG2_GROUP1_NAME = "group1_fr";
private static final String LANG1_GROUP2_NAME = "group2_en";
private static final String LANG2_GROUP2_NAME = "group2_fr";
private static final String GROUP1_ID = "group 1";
private static final String GROUP2_ID = "group 2";
private TerminologyAccess instance;
}