Project

General

Profile

Download (4.73 KB) Statistics
| Branch: | Tag: | Revision:
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");
52
		dtb2 = new DerivedDefinedTermBase("term", "middel");
53
		dtb3 = new DerivedDefinedTermBase("otb3", "low");
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){
70
			super(term, label);
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", "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", "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
}
(8-8/8)