@Override
   public String evaluate(EvaluationContext evaluationContext, String... args) {
      if (args != null) {
         switch (args.length) {
            case 1:
               int maxValue = Integer.MAX_VALUE;
               try {
                  maxValue = Integer.parseInt(args[0]);
               } catch (NumberFormatException nfe) {
                  // Ignore, we'll stick to integer max value.
               }
               return String.valueOf(getRandom().nextInt(maxValue));
            case 2:
               int minValue = 0;
               maxValue = Integer.MAX_VALUE;
               try {
                  minValue = Integer.parseInt(args[0]);
                  maxValue = Integer.parseInt(args[1]);
               } catch (NumberFormatException nfe) {
                  // Ignore, we'll stick to the defaults.
               }
               return String.valueOf(getRandom().nextInt(maxValue - minValue) + minValue);
            default:
               return String.valueOf(getRandom().nextInt());
         }
      }
      return String.valueOf(getRandom().nextInt());
   }
@Test
   void testSimpleEvaluation() {
      // Compute evaluation.
      RandomIntELFunction function = new RandomIntELFunction();
      String randomIntString = function.evaluate(null);

      int randomInt = Integer.parseInt(randomIntString);
      assertTrue(randomInt >= Integer.MIN_VALUE);
      assertTrue(randomInt <= Integer.MAX_VALUE);
   }