/
ISBNValidatorTest.java
119 lines (100 loc) · 3.76 KB
/
ISBNValidatorTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.test.internal.constraintvalidators.hv;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import org.hibernate.validator.constraints.ISBN;
import org.hibernate.validator.internal.constraintvalidators.hv.ISBNValidator;
import org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* A set of tests for {@link ISBN} constraint validator ({@link ISBNValidator}), which
* make sure that validation is performed correctly.
*
* @author Marko Bekhta
*/
public class ISBNValidatorTest {
private ISBNValidator validator;
@BeforeMethod
public void setUp() throws Exception {
validator = new ISBNValidator();
}
@Test
public void validISBN10() throws Exception {
validator.initialize( initializeAnnotation( ISBN.Type.ISBN10 ) );
assertValidISBN( null );
assertValidISBN( "99921-58-10-7" );
assertValidISBN( "9971-5-0210-0" );
assertValidISBN( "960-425-059-0" );
assertValidISBN( "80-902734-1-6" );
assertValidISBN( "0-9752298-0-X" );
assertValidISBN( "0-85131-041-9" );
assertValidISBN( "0-684-84328-5" );
assertValidISBN( "1-84356-028-3" );
}
@Test
public void invalidISBN10() throws Exception {
validator.initialize( initializeAnnotation( ISBN.Type.ISBN10 ) );
// invalid check-digit
assertInvalidISBN( "99921-58-10-8" );
assertInvalidISBN( "9971-5-0210-1" );
assertInvalidISBN( "960-425-059-2" );
assertInvalidISBN( "80-902734-1-8" );
assertInvalidISBN( "0-9752298-0-3" );
assertInvalidISBN( "0-85131-041-X" );
assertInvalidISBN( "0-684-84328-7" );
assertInvalidISBN( "1-84356-028-1" );
// invalid length
assertInvalidISBN( "" );
assertInvalidISBN( "978-0-5" );
assertInvalidISBN( "978-0-55555555555555" );
}
@Test
public void validISBN13() throws Exception {
validator.initialize( initializeAnnotation( ISBN.Type.ISBN13 ) );
assertValidISBN( null );
assertValidISBN( "978-123-456-789-7" );
assertValidISBN( "978-91-983989-1-5" );
assertValidISBN( "978-988-785-411-1" );
assertValidISBN( "978-1-56619-909-4" );
assertValidISBN( "978-1-4028-9462-6" );
assertValidISBN( "978-0-85131-041-1" );
assertValidISBN( "978-0-684-84328-5" );
assertValidISBN( "978-1-84356-028-9" );
assertValidISBN( "978-0-54560-495-6" );
}
@Test
public void invalidISBN13() throws Exception {
validator.initialize( initializeAnnotation( ISBN.Type.ISBN13 ) );
// invalid check-digit
assertInvalidISBN( "978-123-456-789-6" );
assertInvalidISBN( "978-91-983989-1-4" );
assertInvalidISBN( "978-988-785-411-2" );
assertInvalidISBN( "978-1-56619-909-1" );
assertInvalidISBN( "978-1-4028-9462-0" );
assertInvalidISBN( "978-0-85131-041-5" );
assertInvalidISBN( "978-0-684-84328-1" );
assertInvalidISBN( "978-1-84356-028-1" );
assertInvalidISBN( "978-0-54560-495-4" );
// invalid length
assertInvalidISBN( "" );
assertInvalidISBN( "978-0-54560-4" );
assertInvalidISBN( "978-0-55555555555555" );
}
private void assertValidISBN(String isbn) {
assertTrue( validator.isValid( isbn, null ), isbn + " should be a valid ISBN" );
}
private void assertInvalidISBN(String isbn) {
assertFalse( validator.isValid( isbn, null ), isbn + " should be an invalid ISBN" );
}
private ISBN initializeAnnotation(ISBN.Type type) {
ConstraintAnnotationDescriptor.Builder<ISBN> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>( ISBN.class );
descriptorBuilder.setAttribute( "type", type );
return descriptorBuilder.build().getAnnotation();
}
}