Project

General

Profile

« Previous | Next » 

Revision 425411f4

Added by Andreas Müller about 5 years ago

ref #3767 ref #3572 add prefix parsing without http to DOI

View differences:

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