fa2f16b13168114fd8a8393518737294d410d3b5
[cdmlib.git] / cdmlib-model / src / test / java / eu / etaxonomy / cdm / model / common / TermVocabularyTest.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.model.common;
11
12 import static org.junit.Assert.*;
13
14 import java.util.Iterator;
15 import java.util.Set;
16 import java.util.SortedSet;
17
18 import org.apache.log4j.Logger;
19 import org.junit.After;
20 import org.junit.AfterClass;
21 import org.junit.Before;
22 import org.junit.BeforeClass;
23 import org.junit.Test;
24
25 import eu.etaxonomy.cdm.model.name.Rank;
26 import eu.etaxonomy.cdm.test.unit.EntityTestBase;
27
28
29 public class TermVocabularyTest extends EntityTestBase {
30 private static Logger logger = Logger.getLogger(TermVocabularyTest.class);
31
32 private DefinedTermBase dtb1;
33 private DefinedTermBase dtb2;
34 private DefinedTermBase dtb3;
35 private DefinedTermBase dtbFree;
36 private TermVocabulary<DefinedTermBase> voc1;
37 private TermVocabulary<DefinedTermBase> voc2;
38 private TermVocabulary<DefinedTermBase> voc3;
39
40
41 @BeforeClass
42 public static void setUpBeforeClass() throws Exception {
43 }
44
45 @AfterClass
46 public static void tearDownAfterClass() throws Exception {
47 }
48
49 @Before
50 public void setUp() throws Exception {
51 dtb1 = new DerivedDefinedTermBase("otb1", "high", null);
52 dtb2 = new DerivedDefinedTermBase("term", "middel", null);
53 dtb3 = new DerivedDefinedTermBase("otb3", "low", null);
54 dtbFree = new DerivedDefinedTermBase();
55 voc1 = new TermVocabulary<DefinedTermBase>();
56 voc1.addTerm(dtb1);
57 voc1.addTerm(dtb2);
58 voc1.addTerm(dtb3);
59 }
60
61 @After
62 public void tearDown() throws Exception {
63 }
64
65 private class DerivedDefinedTermBase extends OrderedTermBase<DerivedDefinedTermBase>{
66 private DerivedDefinedTermBase(){
67 super();
68 }
69 private DerivedDefinedTermBase(String term, String label, String labelAbbrev){
70 super(term, label, labelAbbrev);
71 }
72 }
73
74 /****************** TESTS ****************************************/
75
76 @Test
77 public final void testSetUp() {
78 assertEquals(3, voc1.size());
79 assertEquals(3, voc1.getTerms().size());
80 }
81
82 @Test
83 public final void testGetNewTermSet() {
84 assertNotNull(voc1.getNewTermSet());
85 assertTrue(Set.class.isAssignableFrom(voc1.getNewTermSet().getClass()));
86 }
87
88 @Test
89 public final void testTermVocabulary() {
90 assertNotNull(voc1);
91 }
92
93 @Test
94 public final void testTermVocabularyStringStringString() {
95 voc2 = new TermVocabulary<DefinedTermBase>("term", "label", null, "termSourceUri");
96 assertEquals("label", voc2.getLabel());
97 }
98
99 @Test
100
101 public final void testGetTerms() {
102 assertEquals(3, voc1.getTerms().size());
103 //assertNotSame(voc1.terms, voc1.getTerms());
104 assertTrue( voc1.terms.getClass().isAssignableFrom(voc1.getTerms().getClass()));
105 }
106
107 @Test
108 public final void testSetTerms() {
109 logger.warn("Not yet implemented"); // TODO
110 }
111
112 @Test
113 public final void testAddTerm() {
114 try {
115 voc1.addTerm(dtbFree);
116 } catch (WrongTermTypeException e) {
117 fail();
118 }
119 assertEquals(4, voc1.size());
120
121 }
122
123 @Test
124 public final void testAddTerm_2() {
125 Rank rank = Rank.SPECIES();
126 voc2 = new TermVocabulary<DefinedTermBase>();
127 try {
128 voc2.addTerm(rank);
129 } catch (WrongTermTypeException e) {
130 fail();
131 }
132 Language lang = Language.ENGLISH();
133 try {
134 voc2.addTerm(lang);
135 fail("Exception should be thrown");
136 } catch (WrongTermTypeException e) {
137 assertTrue(true);
138 }
139 }
140
141 @Test
142 public final void testRemoveTerm() {
143 assertEquals(3, voc1.size());
144 assertTrue(voc1.getTerms().contains(dtb3));
145 voc1.removeTerm(dtb3);
146 assertFalse(voc1.getTerms().contains(dtb3));
147 assertEquals(2, voc1.size());
148 voc1.removeTerm(dtb3);
149 assertEquals(2, voc1.size());
150 assertTrue(voc1.getTerms().contains(dtb1));
151 voc1.removeTerm(dtb1);
152 assertFalse(voc1.getTerms().contains(dtb1));
153 assertEquals(1, voc1.size());
154 assertTrue(voc1.getTerms().contains(dtb2));
155 voc1.removeTerm(dtb2);
156 assertFalse(voc1.getTerms().contains(dtb2));
157 assertEquals(0, voc1.size());
158 }
159
160 @Test
161 public final void testGetTermSourceUri() {
162 assertEquals(null, voc1.getTermSourceUri());
163 voc2 = new TermVocabulary<DefinedTermBase>("term", "label", null, "uri");
164 assertEquals("uri", voc2.getTermSourceUri());
165 }
166
167 @Test
168 public final void testSetTermSourceUri() {
169 voc1.setTermSourceUri("uri");
170 assertEquals("uri", voc1.getTermSourceUri());
171 }
172
173 @Test
174 public final void testGetTermClass() {
175 assertEquals(dtb1.getClass(), voc1.getTermClass());
176 }
177
178 @Test
179 public final void testIterator() {
180 Iterator<DefinedTermBase> it = voc1.iterator();
181 int i = 0;
182 while (it.hasNext()){
183 i++;
184 assertTrue(voc1.getTerms().contains(it.next()));
185 }
186 assertEquals(3, i);
187 }
188 }