HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/alq-webapp-boleteria/node_modules/hoopy/test.js
/* eslint-env mocha */
/* eslint-disable max-nested-callbacks */

'use strict'

const { assert } = require('chai')
const Hoopy = require('.')

test('interface is correct', () => {
  assert.isFunction(Hoopy)
  assert.lengthOf(Hoopy, 1)
  assert.throws(() => new Hoopy(0))
  assert.doesNotThrow(() => new Hoopy(1))
  assert.throws(() => new Hoopy(-1))
  assert.throws(() => new Hoopy(1).push())
  assert.throws(() => new Hoopy(1).pop())
  assert.throws(() => new Hoopy(1).shift())
  assert.throws(() => new Hoopy(1).unshift())
})

suite('instantiate, size=1:', () => {
  let hoopy

  setup(() => {
    hoopy = new Hoopy(1)
  })

  test('instance is array', () => {
    assert.isTrue(Array.isArray(hoopy))
  })

  test('length is correct', () => {
    assert.equal(hoopy.length, 1)
  })

  test('[0] is undefined', () => {
    assert.isUndefined(hoopy[0])
  })

  test('[1] is undefined', () => {
    assert.isUndefined(hoopy[1])
  })

  test('[-1] is undefined', () => {
    assert.isUndefined(hoopy[-1])
  })

  test('grow method is implemented', () => {
    assert.isFunction(hoopy.grow)
    assert.lengthOf(hoopy.grow, 1)
  })

  test('grow throws if by=0', () => {
    assert.throws(() => hoopy.grow(0))
  })

  suite('assign to [0]:', () => {
    setup(() => {
      hoopy[0] = 'foo'
    })

    test('[0] is set correctly', () => {
      assert.equal(hoopy[0], 'foo')
    })

    test('[1] is set correctly', () => {
      assert.equal(hoopy[1], 'foo')
    })

    test('[-1] is set correctly', () => {
      assert.equal(hoopy[-1], 'foo')
    })

    suite('assign to [1]:', () => {
      setup(() => {
        hoopy[1] = 'bar'
      })

      test('[0] is set correctly', () => {
        assert.equal(hoopy[0], 'bar')
      })

      test('[1] is set correctly', () => {
        assert.equal(hoopy[1], 'bar')
      })

      test('[-1] is set correctly', () => {
        assert.equal(hoopy[-1], 'bar')
      })
    })

    suite('grow, by=1:', () => {
      setup(() => {
        hoopy.grow(1)
      })

      test('length is correct', () => {
        assert.equal(hoopy.length, 2)
      })

      test('[0] is set correctly', () => {
        assert.equal(hoopy[0], 'foo')
      })

      test('[1] is undefined', () => {
        assert.isUndefined(hoopy[1])
      })

      test('[-1] is undefined', () => {
        assert.isUndefined(hoopy[-1])
      })
    })
  })
})

suite('instantiate, size=2:', () => {
  let hoopy

  setup(() => {
    hoopy = new Hoopy(2)
  })

  test('length is correct', () => {
    assert.equal(hoopy.length, 2)
  })

  suite('assign to [0]:', () => {
    setup(() => {
      hoopy[0] = 'foo'
    })

    test('[0] is set correctly', () => {
      assert.equal(hoopy[0], 'foo')
    })

    test('[1] is undefined', () => {
      assert.isUndefined(hoopy[1])
    })

    test('[2] is set correctly', () => {
      assert.equal(hoopy[2], 'foo')
    })

    test('[3] is undefined', () => {
      assert.isUndefined(hoopy[3])
    })

    test('[-1] is undefined', () => {
      assert.isUndefined(hoopy[-1])
    })

    suite('assign to [1]:', () => {
      setup(() => {
        hoopy[1] = 'bar'
      })

      test('[0] is set correctly', () => {
        assert.equal(hoopy[0], 'foo')
      })

      test('[1] is set correctly', () => {
        assert.equal(hoopy[1], 'bar')
      })

      test('[2] is set correctly', () => {
        assert.equal(hoopy[2], 'foo')
      })

      test('[-1] is set correctly', () => {
        assert.equal(hoopy[-1], 'bar')
      })

      suite('assign to [2]:', () => {
        setup(() => {
          hoopy[2] = 'baz'
        })

        test('[0] is set correctly', () => {
          assert.equal(hoopy[0], 'baz')
        })

        test('[1] is set correctly', () => {
          assert.equal(hoopy[1], 'bar')
        })

        test('[2] is set correctly', () => {
          assert.equal(hoopy[2], 'baz')
        })

        test('[-1] is set correctly', () => {
          assert.equal(hoopy[-1], 'bar')
        })

        suite('grow, by=1:', () => {
          setup(() => {
            hoopy.grow(1)
          })

          test('length is correct', () => {
            assert.equal(hoopy.length, 3)
          })

          test('[0] is undefined', () => {
            assert.isUndefined(hoopy[0])
          })

          test('[1] is set correctly', () => {
            assert.equal(hoopy[1], 'bar')
          })

          test('[2] is set correctly', () => {
            assert.equal(hoopy[2], 'baz')
          })

          test('[3] is undefined', () => {
            assert.isUndefined(hoopy[3])
          })
        })

        suite('grow, by=2:', () => {
          setup(() => {
            hoopy.grow(2)
          })

          test('length is correct', () => {
            assert.equal(hoopy.length, 4)
          })

          test('[0] is undefined', () => {
            assert.isUndefined(hoopy[0])
          })

          test('[1] is set correctly', () => {
            assert.equal(hoopy[1], 'bar')
          })

          test('[2] is set correctly', () => {
            assert.equal(hoopy[2], 'baz')
          })

          test('[3] is undefined', () => {
            assert.isUndefined(hoopy[3])
          })

          test('[4] is undefined', () => {
            assert.isUndefined(hoopy[4])
          })

          test('[5] is set correctly', () => {
            assert.equal(hoopy[5], 'bar')
          })
        })
      })
    })
  })
})

suite('instantiate and overflow, size=3:', () => {
  let hoopy

  setup(() => {
    hoopy = new Hoopy(3)
    hoopy[2] = 'foo'
    hoopy[3] = 'bar'
    hoopy[4] = 'baz'
  })

  test('data is correct', () => {
    assert.equal(hoopy.length, 3)
    assert.equal(hoopy[2], 'foo')
    assert.equal(hoopy[3], 'bar')
    assert.equal(hoopy[4], 'baz')
    assert.equal(hoopy[0], hoopy[3])
    assert.equal(hoopy[1], hoopy[4])
  })

  test('slice works correctly', () => {
    assert.equal(hoopy.slice(0, 3)[2], hoopy[2])
  })

  suite('grow, by=1:', () => {
    setup(() => {
      hoopy.grow(1)
    })

    test('data is correct', () => {
      assert.equal(hoopy.length, 4)
      assert.equal(hoopy[2], 'foo')
      assert.equal(hoopy[3], 'bar')
      assert.equal(hoopy[4], 'baz')
      assert.equal(hoopy[0], hoopy[4])
      assert.isUndefined(hoopy[1])
    })
  })

  suite('grow, by=2:', () => {
    setup(() => {
      hoopy.grow(2)
    })

    test('data is correct', () => {
      assert.equal(hoopy.length, 5)
      assert.equal(hoopy[2], 'foo')
      assert.equal(hoopy[3], 'bar')
      assert.equal(hoopy[4], 'baz')
      assert.isUndefined(hoopy[0])
      assert.isUndefined(hoopy[1])
    })
  })
})