text: import { OBJECT_CREATE } from '../src/common.js'
  import { deep_equal } from '../src/deep-equal.js'
  import { it } from '../src/it.js'
  
  it('should works', () => {
    expect(deep_equal(true, true)).to.be.true
    expect(deep_equal(true, false)).to.be.false
    expect(deep_equal(false, true)).to.be.false
    expect(deep_equal(false, false)).to.be.true
  
    expect(deep_equal(null, null)).to.be.true
    expect(deep_equal(null, undefined)).to.be.false
    expect(deep_equal(undefined, null)).to.be.false
    expect(deep_equal(undefined, undefined)).to.be.true
  
    expect(deep_equal(42, 42)).to.be.true
    expect(deep_equal(42, '42')).to.be.false
    expect(deep_equal('42', 42)).to.be.false
    expect(deep_equal('42', '42')).to.be.true
  
    expect(deep_equal([1, { a: 2, b: 3 }, 4], [1, { b: 3, a: 2 }, 4])).to.be.true
    expect(deep_equal([1, { a: 2, b: 3 }, 4], [1, { b: 3, a: '2' }, 4])).to.be.false
    expect(deep_equal([1, { a: 2, b: 3 }, 4], [1, { b: 3, a: 2 }, '4'])).to.be.false
  
    expect(deep_equal(OBJECT_CREATE(null), {})).to.be.true
  
    expect(deep_equal(() => { }, () => { })).to.be.false
  
    const keys = 'abcdefghilklmnopqrstuvwxyz0123456789_$'.split('')
    const a = [{}, {}, {}]
    const t = [a[0], a[1], a[2]]
  
    for (let i = 0; i < t.length; ++i) {
      for (let k = 0; k < 10000; ++k) {
        t[i] = t[i][keys[k % keys.length]] = {}
      }
      t[i].deepest = !i
      // console.log(JSON.stringify(a[i])) // Maximum call stack size exceeded
    }
  
    expect(deep_equal(a[0], a[1])).to.be.false
    expect(deep_equal(a[0], a[2])).to.be.false
    expect(deep_equal(a[1], a[2])).to.be.true
  })
  