2727
2828/**
2929 * Test ComparableVersion.
30- *
3130 */
3231@ SuppressWarnings ("unchecked" )
3332class ComparableVersionTest {
@@ -222,6 +221,23 @@ void testLeadingZeroes() {
222221 checkVersionsOrder ("0.2" , "1.0.7" );
223222 }
224223
224+ @ Test
225+ void testDigitGreaterThanNonAscii () {
226+ ComparableVersion c1 = new ComparableVersion ("1" );
227+ ComparableVersion c2 = new ComparableVersion ("é" );
228+ assertTrue (c1 .compareTo (c2 ) > 0 , "expected " + "1" + " > " + "\uD835 \uDFE4 " );
229+ assertTrue (c2 .compareTo (c1 ) < 0 , "expected " + "\uD835 \uDFE4 " + " < " + "1" );
230+ }
231+
232+ @ Test
233+ void testDigitGreaterThanNonBmpCharacters () {
234+ ComparableVersion c1 = new ComparableVersion ("1" );
235+ // MATHEMATICAL SANS-SERIF DIGIT TWO
236+ ComparableVersion c2 = new ComparableVersion ("\uD835 \uDFE4 " );
237+ assertTrue (c1 .compareTo (c2 ) > 0 , "expected " + "1" + " > " + "\uD835 \uDFE4 " );
238+ assertTrue (c2 .compareTo (c1 ) < 0 , "expected " + "\uD835 \uDFE4 " + " < " + "1" );
239+ }
240+
225241 @ Test
226242 void testGetCanonical () {
227243 // MNG-7700
@@ -238,13 +254,25 @@ void testGetCanonical() {
238254
239255 @ Test
240256 void testCompareDigitToLetter () {
241- ComparableVersion c1 = new ComparableVersion ("7" );
242- ComparableVersion c2 = new ComparableVersion ("J" );
243- ComparableVersion c3 = new ComparableVersion ("c" );
244- assertTrue (c1 .compareTo (c2 ) > 0 , "expected 7 > J" );
245- assertTrue (c2 .compareTo (c1 ) < 0 , "expected J < 1" );
246- assertTrue (c1 .compareTo (c3 ) > 0 , "expected 7 > c" );
247- assertTrue (c3 .compareTo (c1 ) < 0 , "expected c < 7" );
257+ ComparableVersion seven = new ComparableVersion ("7" );
258+ ComparableVersion capitalJ = new ComparableVersion ("J" );
259+ ComparableVersion lowerCaseC = new ComparableVersion ("c" );
260+ // Digits are greater than letters
261+ assertTrue (seven .compareTo (capitalJ ) > 0 , "expected 7 > J" );
262+ assertTrue (capitalJ .compareTo (seven ) < 0 , "expected J < 1" );
263+ assertTrue (seven .compareTo (lowerCaseC ) > 0 , "expected 7 > c" );
264+ assertTrue (lowerCaseC .compareTo (seven ) < 0 , "expected c < 7" );
265+ }
266+
267+ @ Test
268+ void testNonAsciiDigits () { // These should not be treated as digits.
269+ ComparableVersion asciiOne = new ComparableVersion ("1" );
270+ ComparableVersion arabicEight = new ComparableVersion ("\u0668 " );
271+ ComparableVersion asciiNine = new ComparableVersion ("9" );
272+ assertTrue (asciiOne .compareTo (arabicEight ) > 0 , "expected " + "1" + " > " + "\u0668 " );
273+ assertTrue (arabicEight .compareTo (asciiOne ) < 0 , "expected " + "\u0668 " + " < " + "1" );
274+ assertTrue (asciiNine .compareTo (arabicEight ) > 0 , "expected " + "9" + " > " + "\u0668 " );
275+ assertTrue (arabicEight .compareTo (asciiNine ) < 0 , "expected " + "\u0668 " + " < " + "9" );
248276 }
249277
250278 @ Test
0 commit comments