test_class.file: worldedit-core/src/test/java/com/sk89q/worldedit/internal/expression/ExpressionTest.java
test_class.identifier: ExpressionTest
test_class.superclass: extends BaseExpressionTest
test_case.body: @TestFactory
      public Stream<DynamicNode> testEvaluate() throws ExpressionException {
          List<ExpressionTestCase> testCases = ImmutableList.of(
              // basic arithmetic
              testCase("1 - 2 + 3", 2),
              // unary ops
              testCase("2 + +4", 6),
              testCase("2 - -4", 6),
              testCase("2 * -4", -8),
              // check functions
              testCase("sin(5)", sin(5)),
              testCase("atan2(3, 4)", atan2(3, 4)),
              // check conditionals
              testCase("0 || 5", 5),
              testCase("2 || 5", 2),
              testCase("2 && 5", 5),
              testCase("5 && 0", 0),
              // check ternaries
              testCase("false ? 1 : 2", 2),
              testCase("true ? 1 : 2", 1),
              // - ternary binds inside
              testCase("true ? true ? 1 : 2 : 3", 1),
              testCase("true ? false ? 1 : 2 : 3", 2),
              testCase("false ? true ? 1 : 2 : 3", 3),
              testCase("false ? false ? 1 : 2 : 3", 3),
              // check return
              testCase("return 1; 0", 1)
          );
          return testCases.stream()
              .map(testCase -> dynamicTest(
                  testCase.getExpression(),
                  () -> checkTestCase(testCase)
              ));
      }
test_case.class_method_signature: ExpressionTest.testEvaluate()
test_case.full_signature: @TestFactory public Stream<DynamicNode> testEvaluate()
test_case.identifier: testEvaluate
test_case.invocations: of testCase testCase testCase testCase testCase sin testCase atan2 testCase testCase testCase testCase testCase testCase testCase testCase testCase testCase testCase map stream dynamicTest getExpression checkTestCase
test_case.modifiers: @TestFactory public
test_case.parameters: ()
test_case.return: Stream<DynamicNode>
test_case.signature: Stream<DynamicNode> testEvaluate()
focal_class.declarator: slots = new SlotTable()
focal_class.modifier: private final
focal_class.original_string: private final SlotTable slots = new SlotTable();
focal_class.type: SlotTable
focal_class.var_name: slots
focal_class.declarator: providedSlots
focal_class.modifier: private final
focal_class.original_string: private final List<String> providedSlots;
focal_class.type: List<String>
focal_class.var_name: providedSlots
focal_class.declarator: root
focal_class.modifier: private final
focal_class.original_string: private final ExpressionParser.AllStatementsContext root;
focal_class.type: ExpressionParser.AllStatementsContext
focal_class.var_name: root
focal_class.declarator: functions = Functions.create()
focal_class.modifier: private final
focal_class.original_string: private final Functions functions = Functions.create();
focal_class.type: Functions
focal_class.var_name: functions
focal_class.declarator: compiledExpression
focal_class.modifier: private final
focal_class.original_string: private final CompiledExpression compiledExpression;
focal_class.type: CompiledExpression
focal_class.var_name: compiledExpression
focal_class.declarator: initialExpression
focal_class.modifier: private final
focal_class.original_string: private final String initialExpression;
focal_class.type: String
focal_class.var_name: initialExpression
focal_class.file: worldedit-core/src/main/java/com/sk89q/worldedit/internal/expression/Expression.java
focal_class.identifier: Expression
focal_class.interfaces: implements Cloneable
focal_class.class_method_signature: Expression.compile(String expression, String... variableNames)
focal_class.full_signature: public static Expression compile(String expression, String... variableNames)
focal_class.identifier: compile
focal_class.modifiers: public static
focal_class.parameters: (String expression, String... variableNames)
focal_class.return: Expression
focal_class.signature: Expression compile(String expression, String... variableNames)
focal_class.class_method_signature: Expression.Expression(String expression, String... variableNames)
focal_class.full_signature: private  Expression(String expression, String... variableNames)
focal_class.identifier: Expression
focal_class.modifiers: private
focal_class.parameters: (String expression, String... variableNames)
focal_class.signature:  Expression(String expression, String... variableNames)
focal_class.class_method_signature: Expression.Expression(String expression, Set<String> variableNames)
focal_class.full_signature: private  Expression(String expression, Set<String> variableNames)
focal_class.identifier: Expression
focal_class.modifiers: private
focal_class.parameters: (String expression, Set<String> variableNames)
focal_class.signature:  Expression(String expression, Set<String> variableNames)
focal_class.class_method_signature: Expression.evaluate(double... values)
focal_class.full_signature: public double evaluate(double... values)
focal_class.identifier: evaluate
focal_class.modifiers: public
focal_class.parameters: (double... values)
focal_class.return: double
focal_class.signature: double evaluate(double... values)
focal_class.class_method_signature: Expression.evaluate(double[] values, int timeout)
focal_class.full_signature: public double evaluate(double[] values, int timeout)
focal_class.identifier: evaluate
focal_class.modifiers: public
focal_class.parameters: (double[] values, int timeout)
focal_class.return: double
focal_class.signature: double evaluate(double[] values, int timeout)
focal_class.class_method_signature: Expression.optimize()
focal_class.full_signature: public void optimize()
focal_class.identifier: optimize
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void optimize()
focal_class.class_method_signature: Expression.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: Expression.getSlots()
focal_class.full_signature: public SlotTable getSlots()
focal_class.identifier: getSlots
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: SlotTable
focal_class.signature: SlotTable getSlots()
focal_class.class_method_signature: Expression.getEnvironment()
focal_class.full_signature: public ExpressionEnvironment getEnvironment()
focal_class.identifier: getEnvironment
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ExpressionEnvironment
focal_class.signature: ExpressionEnvironment getEnvironment()
focal_class.class_method_signature: Expression.setEnvironment(ExpressionEnvironment environment)
focal_class.full_signature: public void setEnvironment(ExpressionEnvironment environment)
focal_class.identifier: setEnvironment
focal_class.modifiers: public
focal_class.parameters: (ExpressionEnvironment environment)
focal_class.return: void
focal_class.signature: void setEnvironment(ExpressionEnvironment environment)
focal_class.class_method_signature: Expression.clone()
focal_class.full_signature: public Expression clone()
focal_class.identifier: clone
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Expression
focal_class.signature: Expression clone()
focal_method.body: public double evaluate(double... values) throws EvaluationException {
          return evaluate(values, WorldEdit.getInstance().getConfiguration().calculationTimeout);
      }
focal_method.class_method_signature: Expression.evaluate(double... values)
focal_method.full_signature: public double evaluate(double... values)
focal_method.identifier: evaluate
focal_method.invocations: evaluate getConfiguration getInstance
focal_method.modifiers: public
focal_method.parameters: (double... values)
focal_method.return: double
focal_method.signature: double evaluate(double... values)