Project

General

Profile

Download (14.6 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.strategy.generate;
2

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

    
5
import java.util.ArrayList;
6
import java.util.HashSet;
7
import java.util.List;
8
import java.util.Set;
9

    
10
import org.apache.log4j.Logger;
11
import org.junit.Before;
12
import org.junit.Test;
13

    
14
import eu.etaxonomy.cdm.model.description.CategoricalData;
15
import eu.etaxonomy.cdm.model.description.Feature;
16
import eu.etaxonomy.cdm.model.description.QuantitativeData;
17
import eu.etaxonomy.cdm.model.description.State;
18
import eu.etaxonomy.cdm.model.description.StateData;
19
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
20
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
21
import eu.etaxonomy.cdm.model.description.TaxonDescription;
22
import eu.etaxonomy.cdm.model.name.INonViralName;
23
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
24
import eu.etaxonomy.cdm.model.taxon.Taxon;
25

    
26
/**
27
 * @author m.venin
28
 * @since 16.12.2010
29
 */
30

    
31
public class IdentificationKeyGeneratorTest {
32
	@SuppressWarnings("unused")
33
    private static final Logger logger = Logger.getLogger(IdentificationKeyGeneratorTest.class);
34

    
35
	private Feature feature1;
36
	private Feature feature2;
37
	private Feature feature3;
38
	private Feature feature4;
39

    
40
	private Taxon taxon1;
41
	private Taxon taxon2;
42
	private Taxon taxon3;
43
	private Taxon taxon4;
44
	private Taxon taxon5;
45
	private Taxon taxon6;
46
	private Taxon taxon7;
47
	private Taxon taxon8;
48

    
49
	private TaxonDescription taxond1;
50
	private TaxonDescription taxond2;
51
	private TaxonDescription taxond3;
52
	private TaxonDescription taxond4;
53
	private TaxonDescription taxond5;
54
	private TaxonDescription taxond6;
55
	private TaxonDescription taxond7;
56
	private TaxonDescription taxond8;
57

    
58
	private Set<TaxonDescription> taxa;
59
	private List<Feature> features;
60

    
61
	private PolytomousKeyGenerator generator;
62

    
63
	@Before
64
	public void setUp() throws Exception {
65
		feature1 = Feature.NewInstance("","Shape of the head","");
66
		feature2 = Feature.NewInstance("","Presence of wings","");
67
		feature3 = Feature.NewInstance("","Length of wings","");
68
		feature4 = Feature.NewInstance("","Colour","");
69

    
70
		INonViralName tn1 = TaxonNameFactory.NewNonViralInstance(null);
71
		INonViralName tn2 = TaxonNameFactory.NewNonViralInstance(null);
72
		INonViralName tn3 = TaxonNameFactory.NewNonViralInstance(null);
73
		INonViralName tn4 = TaxonNameFactory.NewNonViralInstance(null);
74
		INonViralName tn5 = TaxonNameFactory.NewNonViralInstance(null);
75
		INonViralName tn6 = TaxonNameFactory.NewNonViralInstance(null);
76
		INonViralName tn7 = TaxonNameFactory.NewNonViralInstance(null);
77
		INonViralName tn8 = TaxonNameFactory.NewNonViralInstance(null);
78

    
79
		taxon1 = Taxon.NewInstance(tn1, null);
80
		taxon2 = Taxon.NewInstance(tn2, null);
81
		taxon3 = Taxon.NewInstance(tn3, null);
82
		taxon4 = Taxon.NewInstance(tn4, null);
83
		taxon5 = Taxon.NewInstance(tn5, null);
84
		taxon6 = Taxon.NewInstance(tn6, null);
85
		taxon7 = Taxon.NewInstance(tn7, null);
86
		taxon8 = Taxon.NewInstance(tn8, null);
87

    
88
		taxond1 = TaxonDescription.NewInstance(taxon1);
89
		taxond2 = TaxonDescription.NewInstance(taxon2);
90
		taxond3 = TaxonDescription.NewInstance(taxon3);
91
		taxond4 = TaxonDescription.NewInstance(taxon4);
92
		taxond5 = TaxonDescription.NewInstance(taxon5);
93
		taxond6 = TaxonDescription.NewInstance(taxon6);
94
		taxond7 = TaxonDescription.NewInstance(taxon7);
95
		taxond8 = TaxonDescription.NewInstance(taxon8);
96

    
97
		CategoricalData catd11 = CategoricalData.NewInstance();
98
		catd11.setFeature(feature1);
99
		StateData sd11 = StateData.NewInstance();
100
		State s11 = State.NewInstance("","Triangular","");
101
		State s12 = State.NewInstance("","Circular","");
102
		sd11.setState(s11);
103
		catd11.addStateData(sd11);
104

    
105
		CategoricalData catd12 = CategoricalData.NewInstance();
106
		catd12.setFeature(feature1);
107
		StateData sd12 = StateData.NewInstance();
108
		sd12.setState(s11);
109
		catd12.addStateData(sd12);
110

    
111
		CategoricalData catd13 = CategoricalData.NewInstance();
112
		catd13.setFeature(feature1);
113
		StateData sd13 = StateData.NewInstance();
114
		sd13.setState(s11);
115
		catd13.addStateData(sd13);
116

    
117
		CategoricalData catd14 = CategoricalData.NewInstance();
118
		catd14.setFeature(feature1);
119
		StateData sd14 = StateData.NewInstance();
120
		sd14.setState(s11);
121
		catd14.addStateData(sd14);
122

    
123
		CategoricalData catd15 = CategoricalData.NewInstance();
124
		catd15.setFeature(feature1);
125
		StateData sd15 = StateData.NewInstance();
126
		sd15.setState(s12);
127
		catd15.addStateData(sd15);
128

    
129
		CategoricalData catd16 = CategoricalData.NewInstance();
130
		catd16.setFeature(feature1);
131
		StateData sd16 = StateData.NewInstance();
132
		sd16.setState(s12);
133
		catd16.addStateData(sd16);
134

    
135
		CategoricalData catd17 = CategoricalData.NewInstance();
136
		catd17.setFeature(feature1);
137
		StateData sd17 = StateData.NewInstance();
138
		sd17.setState(s12);
139
		catd17.addStateData(sd17);
140

    
141
		CategoricalData catd18 = CategoricalData.NewInstance();
142
		catd18.setFeature(feature1);
143
		StateData sd18 = StateData.NewInstance();
144
		sd18.setState(s12);
145
		catd18.addStateData(sd18);
146

    
147
		/*************************/
148

    
149
		CategoricalData catd21 = CategoricalData.NewInstance();
150
		catd21.setFeature(feature2);
151
		StateData sd21 = StateData.NewInstance();
152
		State s21 = State.NewInstance("","Yes","");
153
		State s22 = State.NewInstance("","No","");
154
		sd21.setState(s21);
155
		catd21.addStateData(sd21);
156

    
157
		CategoricalData catd22 = CategoricalData.NewInstance();
158
		catd22.setFeature(feature2);
159
		StateData sd22 = StateData.NewInstance();
160
		sd22.setState(s21);
161
		catd22.addStateData(sd22);
162

    
163
		CategoricalData catd23 = CategoricalData.NewInstance();
164
		catd23.setFeature(feature2);
165
		StateData sd23 = StateData.NewInstance();
166
		sd23.setState(s21);
167
		catd23.addStateData(sd23);
168

    
169
		CategoricalData catd24 = CategoricalData.NewInstance();
170
		catd24.setFeature(feature2);
171
		StateData sd24 = StateData.NewInstance();
172
		sd24.setState(s21);
173
		catd24.addStateData(sd24);
174

    
175
		CategoricalData catd25 = CategoricalData.NewInstance();
176
		catd25.setFeature(feature2);
177
		StateData sd25 = StateData.NewInstance();
178
		sd25.setState(s21);
179
		catd25.addStateData(sd25);
180

    
181
		CategoricalData catd26 = CategoricalData.NewInstance();
182
		catd26.setFeature(feature2);
183
		StateData sd26 = StateData.NewInstance();
184
		sd26.setState(s21);
185
		catd26.addStateData(sd26);
186

    
187
		CategoricalData catd27 = CategoricalData.NewInstance();
188
		catd27.setFeature(feature2);
189
		StateData sd27 = StateData.NewInstance();
190
		sd27.setState(s21);
191
		catd27.addStateData(sd27);
192

    
193
		CategoricalData catd28 = CategoricalData.NewInstance();
194
		catd28.setFeature(feature2);
195
		StateData sd28 = StateData.NewInstance();
196
		sd28.setState(s22);
197
		catd28.addStateData(sd28);
198

    
199
		/*************************/
200

    
201
		QuantitativeData qtd31 = QuantitativeData.NewInstance();
202
		StatisticalMeasurementValue smv311 = StatisticalMeasurementValue.NewInstance();
203
		smv311.setValue(0);
204
		StatisticalMeasure sm311 = StatisticalMeasure.MIN();
205
		smv311.setType(sm311);
206
		StatisticalMeasurementValue smv312 = StatisticalMeasurementValue.NewInstance();
207
		smv312.setValue(3);
208
		StatisticalMeasure sm312 = StatisticalMeasure.MAX();
209
		smv312.setType(sm312);
210
		qtd31.addStatisticalValue(smv311);
211
		qtd31.addStatisticalValue(smv312);
212

    
213
		QuantitativeData qtd32 = QuantitativeData.NewInstance();
214
		StatisticalMeasurementValue smv321 = StatisticalMeasurementValue.NewInstance();
215
		smv321.setValue(0);
216
		StatisticalMeasure sm321 = StatisticalMeasure.MIN();
217
		smv321.setType(sm321);
218
		StatisticalMeasurementValue smv322 = StatisticalMeasurementValue.NewInstance();
219
		smv322.setValue(3);
220
		StatisticalMeasure sm322 = StatisticalMeasure.MAX();
221
		smv322.setType(sm322);
222
		qtd32.addStatisticalValue(smv321);
223
		qtd32.addStatisticalValue(smv322);
224

    
225
		QuantitativeData qtd33 = QuantitativeData.NewInstance();
226
		StatisticalMeasurementValue smv331 = StatisticalMeasurementValue.NewInstance();
227
		smv331.setValue(6);
228
		StatisticalMeasure sm331 = StatisticalMeasure.MIN();
229
		smv331.setType(sm331);
230
		StatisticalMeasurementValue smv332 = StatisticalMeasurementValue.NewInstance();
231
		smv332.setValue(9);
232
		StatisticalMeasure sm332 = StatisticalMeasure.MAX();
233
		smv332.setType(sm332);
234
		qtd33.addStatisticalValue(smv331);
235
		qtd33.addStatisticalValue(smv332);
236

    
237
		QuantitativeData qtd34 = QuantitativeData.NewInstance();
238
		StatisticalMeasurementValue smv341 = StatisticalMeasurementValue.NewInstance();
239
		smv341.setValue(6);
240
		StatisticalMeasure sm341 = StatisticalMeasure.MIN();
241
		smv341.setType(sm341);
242
		StatisticalMeasurementValue smv342 = StatisticalMeasurementValue.NewInstance();
243
		smv342.setValue(9);
244
		StatisticalMeasure sm342 = StatisticalMeasure.MAX();
245
		smv342.setType(sm342);
246
		qtd34.addStatisticalValue(smv341);
247
		qtd34.addStatisticalValue(smv342);
248

    
249
		QuantitativeData qtd35 = QuantitativeData.NewInstance();
250
		StatisticalMeasurementValue smv351 = StatisticalMeasurementValue.NewInstance();
251
		smv351.setValue(0);
252
		StatisticalMeasure sm351 = StatisticalMeasure.MIN();
253
		smv351.setType(sm351);
254
		StatisticalMeasurementValue smv352 = StatisticalMeasurementValue.NewInstance();
255
		smv352.setValue(3);
256
		StatisticalMeasure sm352 = StatisticalMeasure.MAX();
257
		smv352.setType(sm352);
258
		qtd35.addStatisticalValue(smv351);
259
		qtd35.addStatisticalValue(smv352);
260

    
261
		QuantitativeData qtd36 = QuantitativeData.NewInstance();
262
		StatisticalMeasurementValue smv361 = StatisticalMeasurementValue.NewInstance();
263
		smv361.setValue(0);
264
		StatisticalMeasure sm361 = StatisticalMeasure.MIN();
265
		smv361.setType(sm361);
266
		StatisticalMeasurementValue smv362 = StatisticalMeasurementValue.NewInstance();
267
		smv362.setValue(3);
268
		StatisticalMeasure sm362 = StatisticalMeasure.MAX();
269
		smv362.setType(sm362);
270
		qtd36.addStatisticalValue(smv361);
271
		qtd36.addStatisticalValue(smv362);
272

    
273
		QuantitativeData qtd37 = QuantitativeData.NewInstance();
274
		StatisticalMeasurementValue smv371 = StatisticalMeasurementValue.NewInstance();
275
		smv371.setValue(6);
276
		StatisticalMeasure sm371 = StatisticalMeasure.MIN();
277
		smv371.setType(sm371);
278
		StatisticalMeasurementValue smv372 = StatisticalMeasurementValue.NewInstance();
279
		smv372.setValue(9);
280
		StatisticalMeasure sm372 = StatisticalMeasure.MAX();
281
		smv372.setType(sm372);
282
		qtd37.addStatisticalValue(smv371);
283
		qtd37.addStatisticalValue(smv372);
284

    
285
//		QuantitativeData qtd38 = QuantitativeData.NewInstance();
286
//		StatisticalMeasurementValue smv381 = StatisticalMeasurementValue.NewInstance();
287
//		smv381.setValue(6);
288
//		StatisticalMeasure sm381 = StatisticalMeasure.MIN();
289
//		smv381.setType(sm381);
290
//		StatisticalMeasurementValue smv382 = StatisticalMeasurementValue.NewInstance();
291
//		smv382.setValue(9);
292
//		StatisticalMeasure sm382 = StatisticalMeasure.MAX();
293
//		smv382.setType(sm382);
294
//		qtd38.addStatisticalValue(smv381);
295
//		qtd38.addStatisticalValue(smv382);
296

    
297
		/*************************/
298

    
299
		CategoricalData catd41 = CategoricalData.NewInstance();
300
		catd41.setFeature(feature4);
301
		StateData sd41 = StateData.NewInstance();
302
		State s41 = State.NewInstance("","Blue","");
303
		State s42 = State.NewInstance("","Yellow","");
304
		sd41.setState(s41);
305
		catd41.addStateData(sd41);
306

    
307
		CategoricalData catd42 = CategoricalData.NewInstance();
308
		catd42.setFeature(feature4);
309
		StateData sd42 = StateData.NewInstance();
310
		sd42.setState(s42);
311
		catd42.addStateData(sd42);
312

    
313
		CategoricalData catd43 = CategoricalData.NewInstance();
314
		catd43.setFeature(feature4);
315
		StateData sd43 = StateData.NewInstance();
316
		sd43.setState(s41);
317
		catd43.addStateData(sd43);
318

    
319
		CategoricalData catd44 = CategoricalData.NewInstance();
320
		catd44.setFeature(feature4);
321
		StateData sd44 = StateData.NewInstance();
322
		sd44.setState(s42);
323
		catd44.addStateData(sd44);
324

    
325
		CategoricalData catd45 = CategoricalData.NewInstance();
326
		catd45.setFeature(feature4);
327
		StateData sd45 = StateData.NewInstance();
328
		sd45.setState(s41);
329
		catd45.addStateData(sd45);
330

    
331
		CategoricalData catd46 = CategoricalData.NewInstance();
332
		catd46.setFeature(feature4);
333
		StateData sd46 = StateData.NewInstance();
334
		sd46.setState(s41);
335
		catd46.addStateData(sd46);
336

    
337
		CategoricalData catd47 = CategoricalData.NewInstance();
338
		catd47.setFeature(feature4);
339
		StateData sd47 = StateData.NewInstance();
340
		sd47.setState(s41);
341
		catd47.addStateData(sd47);
342

    
343
		CategoricalData catd48 = CategoricalData.NewInstance();
344
		catd48.setFeature(feature4);
345
		StateData sd48 = StateData.NewInstance();
346
		sd48.setState(s41);
347
		catd48.addStateData(sd48);
348

    
349
		/*************************/
350

    
351
		taxond1.addElement(catd11);
352
		taxond1.addElement(catd21);
353
		taxond1.addElement(qtd31);
354
		taxond1.addElement(catd41);
355

    
356
		taxond2.addElement(catd12);
357
		taxond2.addElement(catd22);
358
		taxond2.addElement(qtd32);
359
		taxond2.addElement(catd42);
360

    
361
		taxond3.addElement(catd13);
362
		taxond3.addElement(catd23);
363
		taxond3.addElement(qtd33);
364
		taxond3.addElement(catd43);
365

    
366
		taxond4.addElement(catd14);
367
		taxond4.addElement(catd24);
368
		taxond4.addElement(qtd34);
369
		taxond4.addElement(catd44);
370

    
371
		taxond5.addElement(catd15);
372
		taxond5.addElement(catd25);
373
		taxond5.addElement(qtd35);
374
		taxond5.addElement(catd45);
375

    
376
		taxond6.addElement(catd16);
377
		taxond6.addElement(catd26);
378
		taxond6.addElement(qtd36);
379
		taxond6.addElement(catd46);
380

    
381
		taxond7.addElement(catd17);
382
		taxond7.addElement(catd27);
383
		taxond7.addElement(qtd37);
384
		taxond7.addElement(catd47);
385

    
386
		taxond8.addElement(catd18);
387
		taxond8.addElement(catd28);
388
//		taxond8.addElement(qtd38); // This taxon has no wings
389
		taxond8.addElement(catd48);
390

    
391
		/*************************/
392

    
393
		features = new ArrayList<Feature>();
394
		features.add(feature1);
395
		features.add(feature2);
396
		features.add(feature3);
397
		features.add(feature4);
398

    
399
		taxa = new HashSet<TaxonDescription>();
400
		taxa.add(taxond1);
401
		taxa.add(taxond2);
402
		taxa.add(taxond3);
403
		taxa.add(taxond4);
404
		taxa.add(taxond5);
405
		taxa.add(taxond6);
406
		taxa.add(taxond7);
407
		taxa.add(taxond8);
408

    
409
	}
410

    
411
//*************************** TESTS *********************** /
412

    
413

    
414
	@Test
415
	public void testInvoke() {
416
		generator = new PolytomousKeyGenerator();
417
		generator.setFeatures(features);
418
		generator.setTaxa(taxa);
419
		assertNotNull("Key should exist.",generator.invoke());
420
	}
421

    
422
	@Test
423
	public void testInvokeMergeModeON() {
424
//		generator = new IdentificationKeyGenerator();
425
//		generator.setFeatures(features);
426
//		generator.setTaxa(taxa);
427
//		generator.mergeModeON();
428
//		generator.invoke();
429
//		assertNotNull("Key should exist (merge mode ON).",generator.invoke());;
430
	}
431

    
432
	@Test
433
	public void testInvokeWithDependencies() {
434
//		generator = new IdentificationKeyGenerator();
435
//		generator.setFeatures(features);
436
//		generator.setTaxa(taxa);
437
////		generator.setDependencies(tree);// TODO create a tree with dependencies to test this function
438
//		generator.invoke();
439
//		assertNotNull("Key should exist (dependencies are present).",generator.invoke());;
440
	}
441

    
442
}
    (1-1/1)