Project

General

Profile

Download (4.46 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.model.common;
2

    
3
import static org.junit.Assert.*;
4

    
5
import java.util.Iterator;
6
import java.util.Set;
7
import java.util.SortedSet;
8

    
9
import org.apache.log4j.Logger;
10
import org.junit.After;
11
import org.junit.AfterClass;
12
import org.junit.Before;
13
import org.junit.BeforeClass;
14
import org.junit.Test;
15

    
16
import eu.etaxonomy.cdm.model.name.Rank;
17
import eu.etaxonomy.cdm.test.unit.EntityTestBase;
18

    
19

    
20
public class TermVocabularyTest extends EntityTestBase {
21
	private static Logger logger = Logger.getLogger(TermVocabularyTest.class);
22

    
23
	private DefinedTermBase dtb1;
24
	private DefinedTermBase dtb2;
25
	private DefinedTermBase dtb3;
26
	private DefinedTermBase dtbFree;
27
	private TermVocabulary<DefinedTermBase> voc1;
28
	private TermVocabulary<DefinedTermBase> voc2;
29
	private TermVocabulary<DefinedTermBase> voc3;
30

    
31
	
32
	@BeforeClass
33
	public static void setUpBeforeClass() throws Exception {
34
	}
35

    
36
	@AfterClass
37
	public static void tearDownAfterClass() throws Exception {
38
	}
39

    
40
	@Before
41
	public void setUp() throws Exception {
42
		dtb1 = new DerivedDefinedTermBase("otb1", "high");
43
		dtb2 = new DerivedDefinedTermBase("term", "middel");
44
		dtb3 = new DerivedDefinedTermBase("otb3", "low");
45
		dtbFree = new DerivedDefinedTermBase();
46
		voc1 = new TermVocabulary<DefinedTermBase>();
47
		voc1.addTerm(dtb1);
48
		voc1.addTerm(dtb2);
49
		voc1.addTerm(dtb3);
50
	}
51

    
52
	@After
53
	public void tearDown() throws Exception {
54
	}
55
	
56
	private class DerivedDefinedTermBase extends OrderedTermBase<DerivedDefinedTermBase>{
57
		private DerivedDefinedTermBase(){
58
			super();
59
		}
60
		private DerivedDefinedTermBase(String term, String label){
61
			super(term, label);
62
		}
63
	}
64
	
65
/****************** TESTS ****************************************/
66
	
67
	@Test
68
	public final void testSetUp() {
69
		assertEquals(3, voc1.size());
70
		assertEquals(3, voc1.getTerms().size());
71
	}
72
	
73
	@Test
74
	public final void testGetNewTermSet() {
75
		assertNotNull(voc1.getNewTermSet());
76
		assertTrue(Set.class.isAssignableFrom(voc1.getNewTermSet().getClass()));
77
	}
78

    
79
	@Test
80
	public final void testTermVocabulary() {
81
		assertNotNull(voc1);
82
	}
83

    
84
	@Test
85
	public final void testTermVocabularyStringStringString() {
86
		voc2 = new TermVocabulary<DefinedTermBase>("term", "label", "termSourceUri");
87
		assertEquals("label", voc2.getLabel());	
88
	}
89

    
90
	@Test
91
	
92
	public final void testGetTerms() {
93
		assertEquals(3, voc1.getTerms().size());
94
		//assertNotSame(voc1.terms, voc1.getTerms());
95
		assertTrue( voc1.terms.getClass().isAssignableFrom(voc1.getTerms().getClass()));
96
	}
97

    
98
	@Test
99
	public final void testSetTerms() {
100
		logger.warn("Not yet implemented"); // TODO
101
	}
102

    
103
	@Test
104
	public final void testAddTerm() {
105
		try {
106
			voc1.addTerm(dtbFree);
107
		} catch (WrongTermTypeException e) {
108
			fail();
109
		}
110
		assertEquals(4, voc1.size());
111
		
112
	}
113
	
114
	@Test
115
	public final void testAddTerm_2() {
116
		Rank rank = Rank.SPECIES();
117
		voc2 = new TermVocabulary<DefinedTermBase>();
118
		try {
119
			voc2.addTerm(rank);
120
		} catch (WrongTermTypeException e) {
121
			fail();
122
		}
123
		Language lang = Language.ENGLISH();
124
		try {
125
			voc2.addTerm(lang);
126
			fail("Exception should be thrown");
127
		} catch (WrongTermTypeException e) {
128
			assertTrue(true);
129
		}
130
	}
131
	
132
	@Test
133
	public final void testRemoveTerm() {
134
		assertEquals(3, voc1.size());
135
		assertTrue(voc1.getTerms().contains(dtb3));
136
		voc1.removeTerm(dtb3);
137
		assertFalse(voc1.getTerms().contains(dtb3));
138
		assertEquals(2, voc1.size());
139
		voc1.removeTerm(dtb3);
140
		assertEquals(2, voc1.size());
141
		assertTrue(voc1.getTerms().contains(dtb1));
142
		voc1.removeTerm(dtb1);
143
		assertFalse(voc1.getTerms().contains(dtb1));
144
		assertEquals(1, voc1.size());
145
		assertTrue(voc1.getTerms().contains(dtb2));
146
		voc1.removeTerm(dtb2);
147
		assertFalse(voc1.getTerms().contains(dtb2));
148
		assertEquals(0, voc1.size());
149
	}
150

    
151
	@Test
152
	public final void testGetTermSourceUri() {
153
		assertEquals(null, voc1.getTermSourceUri());
154
		voc2 = new TermVocabulary<DefinedTermBase>("term", "label", "uri");
155
		assertEquals("uri", voc2.getTermSourceUri());
156
	}
157

    
158
	@Test
159
	public final void testSetTermSourceUri() {
160
		voc1.setTermSourceUri("uri");
161
		assertEquals("uri", voc1.getTermSourceUri());
162
	}
163

    
164
	@Test
165
	public final void testGetTermClass() {
166
		assertEquals(dtb1.getClass(), voc1.getTermClass());
167
	}
168

    
169
	@Test
170
	public final void testIterator() {
171
		Iterator<DefinedTermBase> it = voc1.iterator();
172
		int i = 0;
173
		while (it.hasNext()){
174
			i++;
175
			assertTrue(voc1.getTerms().contains(it.next()));
176
		}
177
		assertEquals(3, i);
178
	}
179
}
(6-6/6)