< prev index next >

src/java.base/share/classes/java/lang/VersionProps.java.template

Print this page
rev 14912 : 8160564: TEST: Add a test to check the implementation of VersionProps.versionNumbers()
Reviewed-by: mchung, redestad

*** 65,89 **** System.setProperty("java.version", java_version); System.setProperty("java.runtime.version", java_runtime_version); System.setProperty("java.runtime.name", java_runtime_name); } ! static List<Integer> versionNumbers() { List<Integer> versionNumbers = new ArrayList<>(4); int prevIndex = 0; ! int index = VERSION_NUMBER.indexOf('.'); while (index > 0) { versionNumbers.add( ! Integer.parseInt(VERSION_NUMBER, prevIndex, index, 10)); prevIndex = index + 1; // Skip the period ! index = VERSION_NUMBER.indexOf('.', prevIndex); } ! versionNumbers.add(Integer.parseInt(VERSION_NUMBER, ! prevIndex, VERSION_NUMBER.length(), 10)); return versionNumbers; } static Optional<String> pre() { return optionalOf(VERSION_PRE); } static Optional<Integer> build() { --- 65,110 ---- System.setProperty("java.version", java_version); System.setProperty("java.runtime.version", java_runtime_version); System.setProperty("java.runtime.name", java_runtime_name); } ! private static void check(String s, int prevIndex, int index) { ! if (index - prevIndex > 1 && ! Character.digit(s.charAt(prevIndex), 10) <= 0) ! throw new IllegalArgumentException("Leading zeros not supported (" + ! s.substring(prevIndex, index) + ")"); ! } ! ! // This method is reflectively regression tested from ! // test/java/lang/Runtime/Version/VersionProps.java ! // If you rename or remove this method, please update the test accordingly. ! static List<Integer> parseVersionNumbers(String versionNumber) { List<Integer> versionNumbers = new ArrayList<>(4); int prevIndex = 0; ! int index = versionNumber.indexOf('.'); while (index > 0) { + check(versionNumber, prevIndex, index); versionNumbers.add( ! Integer.parseInt(versionNumber, prevIndex, index, 10)); prevIndex = index + 1; // Skip the period ! index = versionNumber.indexOf('.', prevIndex); } ! check(versionNumber, prevIndex, versionNumber.length()); ! versionNumbers.add(Integer.parseInt(versionNumber, ! prevIndex, versionNumber.length(), 10)); ! ! if (versionNumbers.get(0) == 0 || versionNumbers.get(versionNumbers.size() - 1) == 0) ! throw new IllegalArgumentException("Leading or trailing zeros not supported (" + ! versionNumbers + ")"); ! return versionNumbers; } + static List<Integer> versionNumbers() { + return parseVersionNumbers(VERSION_NUMBER); + } + static Optional<String> pre() { return optionalOf(VERSION_PRE); } static Optional<Integer> build() {
< prev index next >