text: const $ = require('../index');
  const config = require('./config');
  const jc1 = require('./code/simple1');
  const jc2 = require('./code/simple2');
  const hc1 = require('./code/simple1.html');
  test('$.match: simple js code should not throw error', () => {
      expect(() => {
          const G = $(jc1).find('var $_$');
          G.match;
      }).not.toThrow();
  })
  test('$.match: simple js code match should be undefined', () => {
      const G = $(jc1);
      const match = G.match;
      expect(match).toBe(undefined);
  })
  test('$.match: simple js code match should be same', () => {
      const G = $(jc1).find('var $_$');
      const match = G.match;
      expect(match[0][0].value === 'a').toBeTruthy();
  })
  test('$.match: js code match should be same', () => {
      const G = $(jc2).find(`const $_$ = { name: '1' };`);
      const match = G.match;
      expect(match[0][0].value === 'params').toBeTruthy();
  })
  test('$.match: html code should not throw error', () => {
      expect(() => {
          const G = $(hc1, config.html);
          const w = G.match;
      }).not.toThrow();
  })
  test('$.match: html code match should be undefined', () => {
      const G = $(hc1, config.html);
      const match = G.match;
      expect(match).toBe(undefined);
  })
  test('$.match: html code match should be same', () => {
      const G = $(hc1, config.html).find('<span>$_$</span>');
      const match = G.match;
      expect(match[0] &&
          match[0][0].node.length &&
          match[0][0].node[0].nodeType === 'text' &&
          match[0][0].node[0].content.value.content === 'test'
      ).toBeTruthy();
  })
  
  test('$.match: html code attr value match should be same', () => {
      const G = $(hc1, config.html).find('<div id=$_$>');
      const match = G.match;
      expect(match[0] &&
          match[0][0].node &&
          match[0][0].node.content === '1'
      ).toBeTruthy();
  })
  test('$.match: html code attr key match should be same', () => {
      const G = $(hc1, config.html).find('<div $_$="1">');
      const match = G.match;
      expect(match[0] &&
          match[0][0].node &&
          match[0][0].node.content === 'id'
      ).toBeTruthy();
  })
  
  test('$.match: html code attr key match should be same', () => {
      let res = [];
      $(`(function(param_1, param_2) {
          // Code that runs in your function
      })({"config": {a:1}, "data": {b:2}}, {"actions": {c:3}, "misc": {d:4}});
  
      (function(param_1, param_2) {
          // Code that runs in your function
      })({"config": {a:1}, "data": {b:2}}, {"actions": {c:3}, "misc": {d:4}});
      
      (function() {
          // Code that runs in your function
      })({"config2": {a:1}});
      
      
      (somethingelse)(111);`)
      .find(`(function(){})($_$2)`)
      .each(item => {
          res.push(item.match[2].map(m => m.value))
      })
      expect(res.length == 3).toBeTruthy();
  })
  
  test('$.match: match params', () => {
      const res = $(`foo(a)`)
      .find(`foo($_$1, $_$2)`)
      expect(!res.length).toBeTruthy();
  })
  
  test('$.match: match params', () => {
      const res = $(`
      function xx(){
          var a =5;
          return 6666
      }`)
      .find([
          'function $_$xx(){return $_$return}',
      ])
      
      expect(res.match['return'].length == 1).toBeTruthy();
  })
  
  // test('$.match: match params', () => {
  //     const res = $(`
  //     var tt = this, a = 1;`)
  //     .find('var $_$thisName = this')
      
  //     expect(res.match['thisName'].length == 1).toBeTruthy();
  // })
  
  test('$.match: match params', () => {
      expect(() => {
          const AST = $('iii');
          const b = AST.find('a')
          console.log(b.match)
      }).not.toThrow()
  })