Project

General

Profile

Download (9.98 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2011 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
package eu.etaxonomy.cdm.model.taxon;
10

    
11
import java.util.ArrayList;
12
import java.util.Collections;
13

    
14
import org.apache.log4j.Logger;
15
import org.junit.Assert;
16
import org.junit.Ignore;
17
import org.junit.Test;
18

    
19
import eu.etaxonomy.cdm.model.name.IBotanicalName;
20
import eu.etaxonomy.cdm.model.name.Rank;
21
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
22
import eu.etaxonomy.cdm.model.reference.Reference;
23
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
24

    
25
/**
26
 * @author a.kohlbecker
27
 * @date 18.07.2011
28
 *
29
 */
30
public class TaxonNodeByNameComparatorTest {
31

    
32
    private static final Logger logger = Logger.getLogger(TaxonNodeByNameComparatorTest.class);
33

    
34

    
35
    /**
36
     * test method for {@link TaxonNodeByNameComparator#compare(eu.etaxonomy.cdm.model.taxon.TaxonNode
37
     * , eu.etaxonomy.cdm.model.taxon.TaxonNode) }
38
     */
39
    @Test
40
    @Ignore
41
    public void testCompare() {
42
        Classification classification = Classification.NewInstance("Greuther, 1993");
43

    
44
        Reference sec = ReferenceFactory.newBook();
45

    
46
        IBotanicalName botname_1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
47
        String nameCache_1 = "Epilobium \u00D7aschersonianum Hausskn.";
48
        botname_1.setNameCache(nameCache_1, true);
49
        Taxon taxon_1 = Taxon.NewInstance(botname_1, sec);
50

    
51
        IBotanicalName botname_2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
52
        String nameCache_2 = "\u00D7Epilobium \u00D7angustifolium";
53
        botname_2.setNameCache(nameCache_2, true);
54
        Taxon taxon_2 = Taxon.NewInstance(botname_2, sec);
55

    
56
        IBotanicalName botname_3 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
57
        String nameCache_3 = "Epilobium lamyi";
58
        botname_3.setNameCache(nameCache_3, true);
59
        Taxon taxon_3 = Taxon.NewInstance(botname_3, sec);
60

    
61
        IBotanicalName botname_4 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
62
        String nameCache_4 = "Epilobium tournefortii";
63
        botname_4.setNameCache(nameCache_4, true);
64
        Taxon taxon_4 = Taxon.NewInstance(botname_4, sec);
65

    
66
        classification.addChildTaxon(taxon_1, sec, null);
67
        classification.addChildTaxon(taxon_2, sec, null);
68
        classification.addChildTaxon(taxon_3, sec, null);
69
        classification.addChildTaxon(taxon_4, sec, null);
70

    
71
        classification.getChildNodes();
72
        ArrayList<TaxonNode> taxonNodes = new ArrayList<TaxonNode>();
73
        taxonNodes.addAll(classification.getChildNodes());
74

    
75
        // order using default settings
76
        TaxonNodeByNameComparator taxonNodeByNameComparator = new TaxonNodeByNameComparator();
77

    
78
       // Collections.sort(taxonNodes, taxonNodeByNameComparator);
79
        int i = 0;
80
        logger.debug("order using default settings");
81
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
82
        Assert.assertEquals(nameCache_2, taxonNodes.get(i++).getTaxon().getName().getNameCache());
83
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
84
        Assert.assertEquals(nameCache_1, taxonNodes.get(i++).getTaxon().getName().getNameCache());
85
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
86
        Assert.assertEquals(nameCache_3, taxonNodes.get(i++).getTaxon().getName().getNameCache());
87
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
88
        Assert.assertEquals(nameCache_4, taxonNodes.get(i++).getTaxon().getName().getNameCache());
89

    
90
        // order without ignoring hybrid signs
91
        taxonNodeByNameComparator.setIgnoreHybridSign(false);
92

    
93
        Collections.sort(taxonNodes, taxonNodeByNameComparator);
94

    
95
        i = 0;
96
        logger.debug("order without ignoring hybrid signs");
97
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
98
        Assert.assertEquals(nameCache_3, taxonNodes.get(i++).getTaxon().getName().getNameCache());
99
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
100
        Assert.assertEquals(nameCache_4, taxonNodes.get(i++).getTaxon().getName().getNameCache());
101
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
102
        Assert.assertEquals(nameCache_1, taxonNodes.get(i++).getTaxon().getName().getNameCache());
103
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
104
        Assert.assertEquals(nameCache_2, taxonNodes.get(i++).getTaxon().getName().getNameCache());
105

    
106
    }
107

    
108
    @Test
109
    public void testNullSave() {
110
        Classification classification = Classification.NewInstance("Greuther, 1993");
111

    
112
        Reference sec = ReferenceFactory.newBook();
113

    
114
        IBotanicalName botname_1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
115
        String nameCache_1 = "Epilobium \u00D7aschersonianum Hausskn.";
116
        botname_1.setNameCache(nameCache_1, true);
117
        Taxon taxon_1 = Taxon.NewInstance(botname_1, sec);
118

    
119
        IBotanicalName botname_2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
120
        String nameCache_2 = "\u00D7Epilobium \u00D7angustifolium";
121
        botname_2.setNameCache(nameCache_2, true);
122
        Taxon taxon_2 = Taxon.NewInstance(botname_2, sec);
123

    
124
        TaxonNode node1 = classification.addChildTaxon(taxon_1, sec, null);
125
        TaxonNode node2 = classification.addChildTaxon(taxon_2, sec, null);
126

    
127
        TaxonNodeByNameComparator taxonNodeByNameComparator = new TaxonNodeByNameComparator();
128

    
129
        Assert.assertEquals(0, taxonNodeByNameComparator.compare(null, null));
130
        Assert.assertEquals(-1, taxonNodeByNameComparator.compare(node1, null));
131
        Assert.assertEquals(1, taxonNodeByNameComparator.compare(null, node1));
132

    
133

    
134
        node2.getTaxon().setName(null);
135
        Assert.assertTrue(taxonNodeByNameComparator.compare(node1, node2) > 0);
136

    
137
        node2.setTaxon(null);
138
        Assert.assertTrue(taxonNodeByNameComparator.compare(node1, node2) > 0);
139

    
140
    }
141

    
142
    /**
143
     * test method for {@link TaxonNodeByNameComparator#compare(eu.etaxonomy.cdm.model.taxon.TaxonNode
144
     * , eu.etaxonomy.cdm.model.taxon.TaxonNode) }
145
     */
146
    @Test
147
    @Ignore
148
    public void testCompareNaturalOrder() {
149
        Classification classification = Classification.NewInstance("Greuther, 1993");
150

    
151
        Reference sec = ReferenceFactory.newBook();
152

    
153
        IBotanicalName botname_1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
154
        String nameCache_1 = "Epilobium \u00D7aschersonianum Hausskn.";
155
        botname_1.setNameCache(nameCache_1, true);
156
        Taxon taxon_1 = Taxon.NewInstance(botname_1, sec);
157

    
158
        IBotanicalName botname_2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
159
        String nameCache_2 = "\u00D7Epilobium \u00D7angustifolium";
160
        botname_2.setNameCache(nameCache_2, true);
161
        Taxon taxon_2 = Taxon.NewInstance(botname_2, sec);
162

    
163
        IBotanicalName botname_3 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
164
        String nameCache_3 = "Epilobium lamyi";
165
        botname_3.setNameCache(nameCache_3, true);
166
        Taxon taxon_3 = Taxon.NewInstance(botname_3, sec);
167

    
168
        IBotanicalName botname_4 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
169
        String nameCache_4 = "Epilobium tournefortii";
170
        botname_4.setNameCache(nameCache_4, true);
171
        Taxon taxon_4 = Taxon.NewInstance(botname_4, sec);
172

    
173
        IBotanicalName botname_5 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
174
        String nameCache_5= "Epilobium hirsutum L.";
175
        botname_5.setNameCache(nameCache_5, true);
176
        Taxon taxon_5 = Taxon.NewInstance(botname_5, sec);
177

    
178
        TaxonNode node1 = classification.addChildTaxon(taxon_1, sec, null);
179
        node1.addChildTaxon(taxon_2, sec, null);
180
        TaxonNode node2 = classification.addChildTaxon(taxon_3, sec, null);
181
        node2.addChildTaxon(taxon_4, sec, null);
182

    
183
        classification.getChildNodes();
184

    
185
        ArrayList<TaxonNode> taxonNodes = new ArrayList<TaxonNode>();
186
        taxonNodes.addAll(classification.getChildNodes());
187

    
188
        // order using default settings
189
        TaxonNaturalComparator taxonNodeComparator = new TaxonNaturalComparator();
190
       // Collections.sort(taxonNodes, taxonNodeComparator);
191

    
192
        int i = 0;
193
        logger.debug("order using default settings");
194
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
195
        Assert.assertEquals(nameCache_1, taxonNodes.get(i).getTaxon().getName().getNameCache());
196
        logger.debug(taxonNodes.get(i++).getTaxon().getName().getNameCache());
197
        Assert.assertEquals(nameCache_2, taxonNodes.get(i).getTaxon().getName().getNameCache());
198
        logger.debug(taxonNodes.get(i++).getTaxon().getName().getNameCache());
199
        Assert.assertEquals(nameCache_3, taxonNodes.get(i).getTaxon().getName().getNameCache());
200
        logger.debug(taxonNodes.get(i++).getTaxon().getName().getNameCache());
201
        Assert.assertEquals(nameCache_4, taxonNodes.get(i).getTaxon().getName().getNameCache());
202

    
203
        TaxonNode result = classification.addChildTaxon(taxon_5, 2, null, null);
204
        Assert.assertTrue(result.getSortIndex() == 2);
205

    
206
        i = 0;
207

    
208
        logger.debug(classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
209
        Assert.assertEquals(nameCache_1, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
210
        logger.debug(classification.getChildNodes().get(i++).getTaxon().getName().getNameCache());
211
        Assert.assertEquals(nameCache_2, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
212
        logger.debug(classification.getChildNodes().get(i++).getTaxon().getName().getNameCache());
213
        Assert.assertEquals(nameCache_5, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
214
        logger.debug(classification.getChildNodes().get(i++).getTaxon().getName().getNameCache());
215
        Assert.assertEquals(nameCache_3, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
216

    
217
    }
218

    
219

    
220
}
(5-5/7)