< prev index next >

test/runtime/CommandLine/OptionsValidation/common/optionsvalidation/IntJVMOption.java

Print this page

        

@@ -198,13 +198,18 @@
      */
     @Override
     protected List<String> getValidValues() {
         List<String> validValues = new ArrayList<>();
 
+        if (testMinRange) {
         validValues.add(min.toString());
+        }
+        if (testMaxRange) {
         validValues.add(max.toString());
+        }
 
+        if (testMinRange) {
         if ((min.compareTo(MINUS_ONE) == -1) && (max.compareTo(MINUS_ONE) == 1)) {
             /*
              * Add -1 as valid value if min is less than -1 and max is greater than -1
              */
             validValues.add("-1");

@@ -220,11 +225,13 @@
             /*
              * Add 1 as valid value if min is less than 1 and max is greater than 1
              */
             validValues.add("1");
         }
+        }
 
+        if (testMaxRange) {
         if ((min.compareTo(MAX_4_BYTE_INT_PLUS_ONE) == -1) && (max.compareTo(MAX_4_BYTE_INT_PLUS_ONE) == 1)) {
             /*
              * Check for overflow when flag is assigned to the
              * 4 byte int variable
              */

@@ -236,10 +243,11 @@
              * Check for overflow when flag is assigned to the
              * 4 byte unsigned int variable
              */
             validValues.add(MAX_4_BYTE_UNSIGNED_INT_PLUS_ONE.toString());
         }
+        }
 
         return validValues;
     }
 
     /**

@@ -250,30 +258,34 @@
      */
     @Override
     protected List<String> getInvalidValues() {
         List<String> invalidValues = new ArrayList<>();
 
-        if (withRange) {
             /* Return invalid values only for options which have defined range in VM */
-            if ((is32Bit && min.compareTo(MIN_4_BYTE_INT) != 0)
-                    || (!is32Bit && min.compareTo(MIN_LONG) != 0)) {
+        if (withRange) {
+            if (unsigned) {
+                /* Only add non-negative out-of-range values for unsigned options */
+                if (min.compareTo(BigInteger.ZERO) == 1) {
                 invalidValues.add(min.subtract(BigInteger.ONE).toString());
             }
 
-            if (!unsigned
-                    && ((is32Bit && (max.compareTo(MAX_4_BYTE_INT) != 0))
-                    || (!is32Bit && (max.compareTo(MAX_LONG) != 0)))) {
+                if ((is32Bit && (max.compareTo(MAX_4_BYTE_UNSIGNED_INT) != 0))
+                        || (!is32Bit && !uint64 && (max.compareTo(MAX_UNSIGNED_LONG) != 0))
+                        || (uint64 && (max.compareTo(MAX_UNSIGNED_LONG_64) != 0))) {
                 invalidValues.add(max.add(BigInteger.ONE).toString());
             }
-
-            if (unsigned
-                    && ((is32Bit && (max.compareTo(MAX_4_BYTE_UNSIGNED_INT) != 0))
-                    || (!is32Bit && !uint64 && (max.compareTo(MAX_UNSIGNED_LONG) != 0))
-                    || (uint64 && (max.compareTo(MAX_UNSIGNED_LONG_64) != 0)))) {
+            } else {
+                if ((is32Bit && min.compareTo(MIN_4_BYTE_INT) != 0)
+                        || (!is32Bit && min.compareTo(MIN_LONG) != 0)) {
+                    invalidValues.add(min.subtract(BigInteger.ONE).toString());
+                }
+                if ((is32Bit && (max.compareTo(MAX_4_BYTE_INT) != 0))
+                        || (!is32Bit && (max.compareTo(MAX_LONG) != 0))) {
                 invalidValues.add(max.add(BigInteger.ONE).toString());
             }
         }
+        }
 
         return invalidValues;
     }
 
     /**
< prev index next >