// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:analyzer/src/dart/ast/constant_evaluator.dart';
import 'package:analyzer/src/test_utilities/find_node.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';

import 'parse_base.dart';

main() {
  defineReflectiveSuite(() {
    defineReflectiveTests(ConstantEvaluatorTest);
  });
}

@reflectiveTest
class ConstantEvaluatorTest extends ParseBase {
  void test_binary_bitAnd() {
    var value = _getConstantValue("74 & 42") as int;
    expect(value, 74 & 42);
  }

  void test_binary_bitOr() {
    var value = _getConstantValue("74 | 42") as int;
    expect(value, 74 | 42);
  }

  void test_binary_bitXor() {
    var value = _getConstantValue("74 ^ 42") as int;
    expect(value, 74 ^ 42);
  }

  void test_binary_divide_double() {
    var value = _getConstantValue("3.2 / 2.3");
    expect(value, 3.2 / 2.3);
  }

  void test_binary_divide_integer() {
    var value = _getConstantValue("3 / 2");
    expect(value, 1.5);
  }

  void test_binary_equal_boolean() {
    var value = _getConstantValue("true == false");
    expect(value, false);
  }

  void test_binary_equal_integer() {
    var value = _getConstantValue("2 == 3");
    expect(value, false);
  }

  void test_binary_equal_invalidLeft() {
    var value = _getConstantValue("a == 3");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_equal_invalidRight() {
    var value = _getConstantValue("2 == a");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_equal_string() {
    var value = _getConstantValue("'a' == 'b'");
    expect(value, false);
  }

  void test_binary_greaterThan() {
    var value = _getConstantValue("2 > 3");
    expect(value, false);
  }

  void test_binary_greaterThanOrEqual() {
    var value = _getConstantValue("2 >= 3");
    expect(value, false);
  }

  void test_binary_leftShift() {
    var value = _getConstantValue("16 << 2") as int;
    expect(value, 64);
  }

  void test_binary_lessThan() {
    var value = _getConstantValue("2 < 3");
    expect(value, true);
  }

  void test_binary_lessThanOrEqual() {
    var value = _getConstantValue("2 <= 3");
    expect(value, true);
  }

  void test_binary_logicalAnd() {
    var value = _getConstantValue("true && false");
    expect(value, false);
  }

  void test_binary_logicalOr() {
    var value = _getConstantValue("true || false");
    expect(value, true);
  }

  void test_binary_minus_double() {
    var value = _getConstantValue("3.2 - 2.3");
    expect(value, 3.2 - 2.3);
  }

  void test_binary_minus_integer() {
    var value = _getConstantValue("3 - 2");
    expect(value, 1);
  }

  void test_binary_notEqual_boolean() {
    var value = _getConstantValue("true != false");
    expect(value, true);
  }

  void test_binary_notEqual_integer() {
    var value = _getConstantValue("2 != 3");
    expect(value, true);
  }

  void test_binary_notEqual_invalidLeft() {
    var value = _getConstantValue("a != 3");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_notEqual_invalidRight() {
    var value = _getConstantValue("2 != a");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_notEqual_string() {
    var value = _getConstantValue("'a' != 'b'");
    expect(value, true);
  }

  void test_binary_plus_double() {
    var value = _getConstantValue("2.3 + 3.2");
    expect(value, 2.3 + 3.2);
  }

  void test_binary_plus_double_string() {
    var value = _getConstantValue("'world' + 5.5");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_plus_int_string() {
    var value = _getConstantValue("'world' + 5");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_plus_integer() {
    var value = _getConstantValue("2 + 3");
    expect(value, 5);
  }

  void test_binary_plus_string() {
    var value = _getConstantValue("'hello ' + 'world'");
    expect(value, 'hello world');
  }

  void test_binary_plus_string_double() {
    var value = _getConstantValue("5.5 + 'world'");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_plus_string_int() {
    var value = _getConstantValue("5 + 'world'");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_binary_remainder_double() {
    var value = _getConstantValue("3.2 % 2.3");
    expect(value, 3.2 % 2.3);
  }

  void test_binary_remainder_integer() {
    var value = _getConstantValue("8 % 3");
    expect(value, 2);
  }

  void test_binary_rightShift() {
    var value = _getConstantValue("64 >> 2") as int;
    expect(value, 16);
  }

  void test_binary_times_double() {
    var value = _getConstantValue("2.3 * 3.2");
    expect(value, 2.3 * 3.2);
  }

  void test_binary_times_integer() {
    var value = _getConstantValue("2 * 3");
    expect(value, 6);
  }

  void test_binary_truncatingDivide_double() {
    var value = _getConstantValue("3.2 ~/ 2.3") as int;
    expect(value, 1);
  }

  void test_binary_truncatingDivide_integer() {
    var value = _getConstantValue("10 ~/ 3") as int;
    expect(value, 3);
  }

  @failingTest
  void test_constructor() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  @failingTest
  void test_identifier_class() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  @failingTest
  void test_identifier_function() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  @failingTest
  void test_identifier_static() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  @failingTest
  void test_identifier_staticMethod() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  @failingTest
  void test_identifier_topLevel() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  @failingTest
  void test_identifier_typeParameter() {
    var value = _getConstantValue("?");
    expect(value, null);
  }

  void test_literal_boolean_false() {
    var value = _getConstantValue("false");
    expect(value, false);
  }

  void test_literal_boolean_true() {
    var value = _getConstantValue("true");
    expect(value, true);
  }

  void test_literal_list() {
    var value = _getConstantValue("['a', 'b', 'c']") as List<Object>;
    expect(value.length, 3);
    expect(value[0], "a");
    expect(value[1], "b");
    expect(value[2], "c");
  }

  void test_literal_map() {
    var value = _getConstantValue("{'a' : 'm', 'b' : 'n', 'c' : 'o'}")
        as Map<Object, Object>;
    expect(value.length, 3);
    expect(value["a"], "m");
    expect(value["b"], "n");
    expect(value["c"], "o");
  }

  void test_literal_null() {
    var value = _getConstantValue("null");
    expect(value, null);
  }

  void test_literal_number_double() {
    var value = _getConstantValue("3.45");
    expect(value, 3.45);
  }

  void test_literal_number_integer() {
    var value = _getConstantValue("42");
    expect(value, 42);
  }

  void test_literal_string_adjacent() {
    var value = _getConstantValue("'abc' 'def'");
    expect(value, "abcdef");
  }

  void test_literal_string_interpolation_invalid() {
    var value = _getConstantValue("'a\${f()}c'");
    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
  }

  void test_literal_string_interpolation_valid() {
    var value = _getConstantValue("'a\${3}c'");
    expect(value, "a3c");
  }

  void test_literal_string_simple() {
    var value = _getConstantValue("'abc'");
    expect(value, "abc");
  }

  void test_parenthesizedExpression() {
    var value = _getConstantValue("('a')");
    expect(value, "a");
  }

  void test_unary_bitNot() {
    var value = _getConstantValue("~42") as int;
    expect(value, ~42);
  }

  void test_unary_logicalNot() {
    var value = _getConstantValue("!true");
    expect(value, false);
  }

  void test_unary_negated_double() {
    var value = _getConstantValue("-42.3");
    expect(value, -42.3);
  }

  void test_unary_negated_integer() {
    var value = _getConstantValue("-42");
    expect(value, -42);
  }

  Object? _getConstantValue(String expressionCode) {
    var path = convertPath('/test/lib/test.dart');

    newFile2(path, '''
void f() {
  ($expressionCode); // ref
}
''');

    var parseResult = parseUnit(path);
    expect(parseResult.errors, isEmpty);

    var findNode = FindNode(parseResult.content, parseResult.unit);
    var expression = findNode.parenthesized('); // ref').expression;

    return expression.accept(ConstantEvaluator());
  }
}
