43
43
import java .util .concurrent .TimeUnit ;
44
44
45
45
import org .junit .jupiter .api .Test ;
46
+ import org .junit .jupiter .params .ParameterizedTest ;
47
+ import org .junit .jupiter .params .provider .ValueSource ;
46
48
47
49
/**
48
50
* Unit tests for {@link DefaultArgumentConverter}.
@@ -55,11 +57,13 @@ class DefaultArgumentConverterTests {
55
57
void isAwareOfNull () {
56
58
assertConverts (null , Object .class , null );
57
59
assertConverts (null , String .class , null );
60
+ assertConverts (null , Boolean .class , null );
58
61
}
59
62
60
63
@ Test
61
64
void isAwareOfWrapperTypesForPrimitiveTypes () {
62
65
assertConverts (true , boolean .class , true );
66
+ assertConverts (false , boolean .class , false );
63
67
assertConverts ((byte ) 1 , byte .class , (byte ) 1 );
64
68
assertConverts ('o' , char .class , 'o' );
65
69
assertConverts ((short ) 1 , short .class , (short ) 1 );
@@ -85,6 +89,7 @@ void isAwareOfWideningConversions() {
85
89
@ Test
86
90
void convertsStringsToPrimitiveTypes () {
87
91
assertConverts ("true" , boolean .class , true );
92
+ assertConverts ("false" , boolean .class , false );
88
93
assertConverts ("o" , char .class , 'o' );
89
94
assertConverts ("1" , byte .class , (byte ) 1 );
90
95
assertConverts ("1_0" , byte .class , (byte ) 10 );
@@ -100,6 +105,54 @@ void convertsStringsToPrimitiveTypes() {
100
105
assertConverts ("42.2_3" , double .class , 42.23 );
101
106
}
102
107
108
+ @ Test
109
+ void convertsStringsToPrimitiveWrapperTypes () {
110
+ assertConverts ("true" , Boolean .class , true );
111
+ assertConverts ("false" , Boolean .class , false );
112
+ assertConverts ("o" , Character .class , 'o' );
113
+ assertConverts ("1" , Byte .class , (byte ) 1 );
114
+ assertConverts ("1_0" , Byte .class , (byte ) 10 );
115
+ assertConverts ("1" , Short .class , (short ) 1 );
116
+ assertConverts ("1_2" , Short .class , (short ) 12 );
117
+ assertConverts ("42" , Integer .class , 42 );
118
+ assertConverts ("700_050_000" , Integer .class , 700_050_000 );
119
+ assertConverts ("42" , Long .class , 42L );
120
+ assertConverts ("4_2" , Long .class , 42L );
121
+ assertConverts ("42.23" , Float .class , 42.23f );
122
+ assertConverts ("42.2_3" , Float .class , 42.23f );
123
+ assertConverts ("42.23" , Double .class , 42.23 );
124
+ assertConverts ("42.2_3" , Double .class , 42.23 );
125
+ }
126
+
127
+ @ Test
128
+ void convertsTheWordNullToBooleanFalse () {
129
+ assertConverts ("null" , boolean .class , false );
130
+ assertConverts ("NULL" , boolean .class , false );
131
+ assertConverts ("null" , Boolean .class , false );
132
+ assertConverts ("NULL" , Boolean .class , false );
133
+ }
134
+
135
+ @ ParameterizedTest (name = "[{index}] {0}" )
136
+ @ ValueSource (classes = { char .class , boolean .class , short .class , byte .class , int .class , long .class , float .class ,
137
+ double .class })
138
+ void throwsExceptionForNullToPrimitiveTypeConversion (Class <?> type ) {
139
+ assertThatExceptionOfType (ArgumentConversionException .class ) //
140
+ .isThrownBy (() -> convert (null , type )) //
141
+ .withMessage ("Cannot convert null to primitive value of type " + type .getCanonicalName ());
142
+ }
143
+
144
+ @ ParameterizedTest (name = "[{index}] {0}" )
145
+ // NOTE: everything except Boolean.class and Character.class.
146
+ @ ValueSource (classes = { Short .class , Byte .class , Integer .class , Long .class , Float .class , Double .class })
147
+ void throwsExceptionWhenConvertingTheWordNullToPrimitiveWrapperType (Class <?> type ) {
148
+ assertThatExceptionOfType (ArgumentConversionException .class ) //
149
+ .isThrownBy (() -> convert ("null" , type )) //
150
+ .withMessage ("Failed to convert String \" null\" to type " + type .getCanonicalName ());
151
+ assertThatExceptionOfType (ArgumentConversionException .class ) //
152
+ .isThrownBy (() -> convert ("NULL" , type )) //
153
+ .withMessage ("Failed to convert String \" NULL\" to type " + type .getCanonicalName ());
154
+ }
155
+
103
156
@ Test
104
157
void throwsExceptionOnInvalidStringForPrimitiveTypes () {
105
158
assertThatExceptionOfType (ArgumentConversionException .class ) //
0 commit comments