import 'package:dev_compiler/src/js_ast/js_ast.dart';
import 'package:test/test.dart';

final _prenumberedPlaceholders = new RegExp(r'#\d+');

_parser(String src) =>
    new MiniJsParser(src.replaceAll(_prenumberedPlaceholders, '#'));

_check(Node node, String expected) =>
    expect(node.toString(), 'js_ast `$expected`');

_checkStatement(String src) => _check(_parser(src).parseStatement(), src);

_checkExpression(String src) => _check(_parser(src).parseExpression(), src);

main() {
  group('MiniJsParser', () {
    // TODO(ochafik): Add more coverage.
    test('parses classes with complex members', () {
      _checkExpression('class Foo {\n'
          '  [foo](...args) {}\n'
          '  [#0](x) {}\n'
          '  static [foo](...args) {}\n'
          '  static [#1](x) {}\n'
          '  get [foo]() {}\n'
          '  get [#2]() {}\n'
          '  static get [foo]() {}\n'
          '  static get [#3]() {}\n'
          '  set [foo](v) {}\n'
          '  set [#4](v) {}\n'
          '  static set [foo](v) {}\n'
          '  static set [#5](v) {}\n'
          '}');
    });
    test('parses statements', () {
      _checkStatement('for (let i = 0; i < 10; i++) {\n}\n');
      _checkStatement('for (let i = 0, j = 1; i < 10; i++) {\n}\n');
      _checkStatement('var [x, y = []] = list;\n');
      _checkStatement('var {x, y = {x: y}} = obj;\n');
    });
  });
}
