Project

General

Profile

Download (6.24 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 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.metadata;
10

    
11
import java.util.List;
12
import java.util.UUID;
13

    
14
import org.junit.Assert;
15
import org.junit.Before;
16
import org.junit.Test;
17

    
18
/**
19
 * @author a.mueller
20
 * @since 2013-07-03
21
 *
22
 */
23
public class CdmPreferenceTest {
24

    
25
	private String subject;
26
	private String predicate;
27
	private String value;
28

    
29
	/**
30
	 * @throws java.lang.Exception
31
	 */
32
	@Before
33
	public void setUp() throws Exception {
34
		subject = "/";
35
		predicate = "eu.etaxonomy.cdm.model.name.NomenclaturalCode";
36
		value = "ICZN";
37

    
38
	}
39

    
40
	/**
41
	 * Test method for {@link eu.etaxonomy.cdm.model.metadata.CdmPreference#CdmPreferences(java.lang.String, java.lang.String, java.lang.String)}.
42
	 */
43
	@Test
44
	public void testCdmPreferences() {
45
		CdmPreference prefs = new CdmPreference(subject, predicate, value);
46
		Assert.assertEquals(subject, prefs.getSubjectString());
47
		Assert.assertEquals(predicate, prefs.getPredicate());
48
		Assert.assertEquals(value, prefs.getValue());
49

    
50

    
51
	}
52

    
53

    
54
	@Test
55
	public void testConstraints() {
56
		String veryLongText100 =
57
"This is a very long text it is even longer then any other long text which is already long. size =100";
58
		String veryLongText200 = veryLongText100 + veryLongText100;
59
		String veryLongText400 = veryLongText200 + veryLongText200;
60
		String veryLongText1200 = veryLongText400 + veryLongText400 + veryLongText400;
61

    
62
		CdmPreference prefs = null;
63
		try {
64
			prefs = new CdmPreference(null, predicate, value);
65
			Assert.fail("Subject must not be null");
66
		} catch (Exception e) {
67
			//ok
68
		}
69
		try {
70
			prefs = new CdmPreference(veryLongText400, predicate, value);
71
			Assert.fail("Subject must not be longer then 255");
72
		} catch (Exception e) {
73
			//ok
74
		}
75

    
76
		try {
77
			prefs = new CdmPreference(subject, null, value);
78
			Assert.fail("Predicate must not be null");
79
		} catch (Exception e) {
80
			//ok
81
		}
82
		try {
83
			prefs = new CdmPreference(subject, veryLongText400, value);
84
			Assert.fail("Predicate must not be longer then 255");
85
		} catch (Exception e) {
86
			//ok
87
		}
88

    
89
		try {
90
			prefs = new CdmPreference(subject, predicate, null);
91
	         Assert.assertEquals(subject, prefs.getSubjectString());
92
	         Assert.assertEquals(predicate, prefs.getPredicate());
93
	         Assert.assertNull(value, null);
94
		} catch (Exception e) {
95
			Assert.fail("Currently null values are allowed in preferences");
96

    
97
		}
98
		//commented as we allow >65k length now
99
//		try {
100
//			prefs = new CdmPreference(subject, predicate, veryLongText1200);
101
//			Assert.fail("Value must not be longer then 1023");
102
//		} catch (Exception e) {
103
//			//ok
104
//		}
105
	}
106

    
107
    @Test
108
    public void testSubjectSyntax() {
109
        CdmPreference prefs = null;
110
        String subject2 = null;
111
        try {
112
            subject2 = "/TaxonNode[#t1#18681#6392#5358#9#2#]/";
113
            prefs = new CdmPreference(subject2, predicate, value);
114
            Assert.assertEquals(subject2, prefs.getSubjectString());
115
            Assert.assertEquals(predicate, prefs.getPredicate());
116
            Assert.assertEquals(value, prefs.getValue());
117
        } catch (Exception e) {
118
            Assert.fail("Syntax for " + subject2 + " should be ok");
119
        }
120

    
121
        try {
122
            subject2 = "/TaxonNode[#t1#18681#6392#5358#9#2#]x";
123
            prefs = new CdmPreference(subject2, predicate, value);
124
            Assert.fail("Syntax for " + subject2 + " should fail");
125
        } catch (Exception e) {
126
            //ok
127
        }
128

    
129
        try {
130
            subject2 = "/Taxon3Node[#t1#18681#6392#5358#9#2#]";
131
            prefs = new CdmPreference(subject2, predicate, value);
132
            Assert.fail("Syntax for " + subject2 + " should fail");
133
        } catch (Exception e) {
134
            //ok
135
        }
136

    
137
        try {
138
            prefs = CdmPreference.NewVaadinInstance(PreferencePredicate.AvailableDistributionStatus, value);
139
        } catch (Exception e) {
140
            Assert.fail("Syntax for /Vaadin/ should not fail");
141
        }
142

    
143
    }
144

    
145
    @Test
146
    public void testGetValueUuidList() {
147
        //null
148
        CdmPreference prefs = new CdmPreference(subject, predicate, null);
149
        List<UUID> list = prefs.getValueUuidList();
150
        Assert.assertTrue(list.isEmpty());
151
        //empty
152
        prefs = new CdmPreference(subject, predicate, " ");
153
        list = prefs.getValueUuidList();
154
        Assert.assertTrue(list.isEmpty());
155
        //singleUuid
156
        prefs = new CdmPreference(subject, predicate, "1ef35078-fb4a-451d-a15a-127235245358");
157
        list = prefs.getValueUuidList();
158
        Assert.assertEquals(1, list.size());
159
        Assert.assertEquals(UUID.fromString("1ef35078-fb4a-451d-a15a-127235245358"), list.get(0));
160
        //mulitple uuids and varying separators
161
        prefs = new CdmPreference(subject, predicate, "1ef35078-fb4a-451d-a15a-127235245358,a1184db8-e476-4410-b085-d8844ada47e8;43b2cd7d-401b-4565-853f-88ae1c43c55a");
162
        list = prefs.getValueUuidList();
163
        Assert.assertEquals(3, list.size());
164
        Assert.assertEquals(UUID.fromString("1ef35078-fb4a-451d-a15a-127235245358"), list.get(0));
165
        Assert.assertEquals(UUID.fromString("43b2cd7d-401b-4565-853f-88ae1c43c55a"), list.get(2));
166
        //trailing and preceding separators and whitespaces
167
        prefs = new CdmPreference(subject, predicate, " ; 1ef35078-fb4a-451d-a15a-127235245358 , a1184db8-e476-4410-b085-d8844ada47e8;43b2cd7d-401b-4565-853f-88ae1c43c55a , ");
168
        list = prefs.getValueUuidList();
169
        Assert.assertEquals(3, list.size());
170
        Assert.assertEquals(UUID.fromString("1ef35078-fb4a-451d-a15a-127235245358"), list.get(0));
171
        Assert.assertEquals(UUID.fromString("43b2cd7d-401b-4565-853f-88ae1c43c55a"), list.get(2));
172
        //non uuids
173
        prefs = new CdmPreference(subject, predicate, "xxx 1ef35078-fb4a-451d-a15a-127235245358");
174
        try {
175
            list = prefs.getValueUuidList();
176
            Assert.fail("Parsing non UUIDs must throw exception");
177
        } catch (IllegalArgumentException e) {
178
            //correct
179
        }
180
    }
181

    
182

    
183
}
(2-2/4)