Revision 425411f4
Added by Andreas Müller about 5 years ago
cdmlib-commons/src/test/java/eu/etaxonomy/cdm/common/DoiTest.java | ||
---|---|---|
13 | 13 |
import org.junit.Test; |
14 | 14 |
|
15 | 15 |
/** |
16 |
*
|
|
16 |
* |
|
17 | 17 |
* Test class for testing the {@link DOI} class. |
18 |
*
|
|
18 |
* |
|
19 | 19 |
* For doi syntax see also http://www.doi.org/doi_handbook/2_Numbering.html |
20 | 20 |
* or |
21 |
* http://stackoverflow.com/questions/27910/finding-a-doi-in-a-document-or-page
|
|
22 |
*
|
|
21 |
* http://stackoverflow.com/questions/27910/finding-a-doi-in-a-document-or-page |
|
22 |
* |
|
23 | 23 |
* @author a.mueller |
24 | 24 |
* |
25 | 25 |
*/ |
... | ... | |
38 | 38 |
DOI doi = DOI.fromString(validDoi); |
39 | 39 |
Assert.assertEquals("10.1002", doi.getPrefix()); |
40 | 40 |
Assert.assertEquals("1234", doi.getSuffix()); |
41 |
|
|
41 |
|
|
42 | 42 |
validDoi = "10.1002/(SICI)1522-2594(199911)42:5<952::AID-MRM16>3.0.CO;2-S"; |
43 | 43 |
doi = DOI.fromString(validDoi); |
44 | 44 |
Assert.assertEquals("10.1002", doi.getPrefix()); |
45 | 45 |
Assert.assertEquals("(SICI)1522-2594(199911)42:5<952::AID-MRM16>3.0.CO;2-S", doi.getSuffix()); |
46 |
|
|
46 |
|
|
47 | 47 |
validDoi = "10.1007.10/978-3-642-28108-2_19"; |
48 | 48 |
doi = DOI.fromString(validDoi); |
49 | 49 |
Assert.assertEquals("10.1007.10", doi.getPrefix()); |
50 | 50 |
Assert.assertEquals("978-3-642-28108-2_19", doi.getSuffix()); |
51 |
|
|
51 |
|
|
52 | 52 |
validDoi="10.1579/0044-7447(2006)35\\[89:RDUICP\\]2.0.CO;2"; |
53 | 53 |
doi = DOI.fromString(validDoi); |
54 | 54 |
Assert.assertEquals("10.1579", doi.getPrefix()); |
55 | 55 |
Assert.assertEquals("0044-7447(2006)35\\[89:RDUICP\\]2.0.CO;2", doi.getSuffix()); |
56 | 56 |
|
57 | 57 |
} |
58 |
|
|
58 |
|
|
59 | 59 |
@Test |
60 | 60 |
public void testFromRegistrantCodeAndSuffix() { |
61 | 61 |
DOI doi = DOI.fromRegistrantCodeAndSuffix("1579", "978-3-642-28108-2_19"); |
... | ... | |
63 | 63 |
Assert.assertEquals("978-3-642-28108-2_19", doi.getSuffix()); |
64 | 64 |
Assert.assertNotEquals("1234", doi.getSuffix()); |
65 | 65 |
} |
66 |
|
|
66 |
|
|
67 | 67 |
@Test |
68 | 68 |
public void testParserFail() { |
69 | 69 |
String invalidDoi = "10.4515260,51.1656910"; //must never match to avoid matches with geo coordinates |
... | ... | |
88 | 88 |
DOI doi = DOI.fromString(validDoi); |
89 | 89 |
Assert.assertEquals("10.1002", doi.getPrefix()); |
90 | 90 |
Assert.assertEquals("1234", doi.getSuffix()); |
91 |
|
|
91 |
|
|
92 | 92 |
validDoi = "http://doi.org/10.1002/1234"; |
93 | 93 |
doi = DOI.fromString(validDoi); |
94 | 94 |
Assert.assertEquals("10.1002", doi.getPrefix()); |
95 | 95 |
Assert.assertEquals("1234", doi.getSuffix()); |
96 |
|
|
97 |
|
|
96 |
|
|
98 | 97 |
validDoi = "http://doi.org/urn:doi:10.123:456ABC%2Fzyz"; |
99 | 98 |
doi = DOI.fromString(validDoi); |
100 | 99 |
Assert.assertEquals("10.123", doi.getPrefix()); |
101 | 100 |
Assert.assertEquals("456ABC/zyz", doi.getSuffix()); //urn must be percentage encoded ( / -> %2F) |
102 |
|
|
101 |
|
|
102 |
validDoi = "doi.org/urn:doi:10.123:456ABC%2Fzyz"; |
|
103 |
doi = DOI.fromString(validDoi); |
|
104 |
Assert.assertEquals("10.123", doi.getPrefix()); |
|
105 |
Assert.assertEquals("456ABC/zyz", doi.getSuffix()); //urn must be percentage encoded ( / -> %2F) |
|
106 |
|
|
107 |
validDoi = "dx.doi.org/urn:doi:10.123:456ABC%2Fzyz"; |
|
108 |
doi = DOI.fromString(validDoi); |
|
109 |
Assert.assertEquals("10.123", doi.getPrefix()); |
|
110 |
Assert.assertEquals("456ABC/zyz", doi.getSuffix()); //urn must be percentage encoded ( / -> %2F) |
|
111 |
|
|
103 | 112 |
} |
104 |
|
|
113 |
|
|
105 | 114 |
@Test |
106 | 115 |
public void testEquals() { |
107 | 116 |
String validDoi = "10.1002/12a4"; |
... | ... | |
113 | 122 |
DOI doi3 = DOI.fromString(validDoi); |
114 | 123 |
Assert.assertNotEquals("Different DOIs must not be equal", doi1, doi3); |
115 | 124 |
} |
116 |
|
|
125 |
|
|
117 | 126 |
@Test |
118 | 127 |
public void testAsURI() { |
119 | 128 |
//mandatory encoding according to http://www.doi.org/doi_handbook/2_Numbering.html#2.5.2.4 |
... | ... | |
121 | 130 |
DOI doi1 = DOI.fromString(validDoi); |
122 | 131 |
String uri = doi1.asURI(); |
123 | 132 |
Assert.assertEquals(DOI.HTTP_DOI_ORG + "10.1002/1234%2556%2278%2390%2012%3f34", uri); |
124 |
|
|
133 |
|
|
125 | 134 |
//recommendedEncoding |
126 | 135 |
validDoi = "10.1002/1234<56>78{90}12^34"; |
127 | 136 |
doi1 = DOI.fromString(validDoi); |
128 | 137 |
uri = doi1.asURI(); |
129 | 138 |
Assert.assertEquals(DOI.HTTP_DOI_ORG + "10.1002/1234%3c56%3e78%7b90%7d12%5e34", uri); |
130 |
|
|
139 |
|
|
131 | 140 |
//recommendedEncoding (cont.) |
132 | 141 |
validDoi = "10.1002/1234[56]78`90|12\\34+56"; |
133 | 142 |
doi1 = DOI.fromString(validDoi); |
134 | 143 |
uri = doi1.asURI(); |
135 | 144 |
Assert.assertEquals(DOI.HTTP_DOI_ORG + "10.1002/1234%5b56%5d78%6090%7c12%5c34%2b56", uri); |
136 |
|
|
145 |
|
|
137 | 146 |
} |
138 | 147 |
|
139 |
|
|
140 | 148 |
|
141 |
|
|
149 |
|
|
150 |
|
|
142 | 151 |
private void testInvalid(String invalidDoi) { |
143 | 152 |
try { |
144 | 153 |
DOI.fromString(invalidDoi); |
... | ... | |
146 | 155 |
} catch (IllegalArgumentException e) { |
147 | 156 |
//OK |
148 | 157 |
} |
149 |
}
|
|
158 |
} |
|
150 | 159 |
|
151 | 160 |
} |
Also available in: Unified diff
ref #3767 ref #3572 add prefix parsing without http to DOI