HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-172-31-4-197 6.8.0-1036-aws #38~22.04.1-Ubuntu SMP Fri Aug 22 15:44:33 UTC 2025 x86_64
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/api-management/node_modules/sparse-bitfield/test.js
var alloc = require('buffer-alloc')
var tape = require('tape')
var bitfield = require('./')

tape('set and get', function (t) {
  var bits = bitfield()

  t.same(bits.get(0), false, 'first bit is false')
  bits.set(0, true)
  t.same(bits.get(0), true, 'first bit is true')
  t.same(bits.get(1), false, 'second bit is false')
  bits.set(0, false)
  t.same(bits.get(0), false, 'first bit is reset')
  t.end()
})

tape('set large and get', function (t) {
  var bits = bitfield()

  t.same(bits.get(9999999999999), false, 'large bit is false')
  bits.set(9999999999999, true)
  t.same(bits.get(9999999999999), true, 'large bit is true')
  t.same(bits.get(9999999999999 + 1), false, 'large bit + 1 is false')
  bits.set(9999999999999, false)
  t.same(bits.get(9999999999999), false, 'large bit is reset')
  t.end()
})

tape('get and set buffer', function (t) {
  var bits = bitfield({trackUpdates: true})

  t.same(bits.pages.get(0, true), undefined)
  t.same(bits.pages.get(Math.floor(9999999999999 / 8 / 1024), true), undefined)
  bits.set(9999999999999, true)

  var bits2 = bitfield()
  var upd = bits.pages.lastUpdate()
  bits2.pages.set(Math.floor(upd.offset / 1024), upd.buffer)
  t.same(bits2.get(9999999999999), true, 'bit is set')
  t.end()
})

tape('toBuffer', function (t) {
  var bits = bitfield()

  t.same(bits.toBuffer(), alloc(0))

  bits.set(0, true)

  t.same(bits.toBuffer(), bits.pages.get(0).buffer)

  bits.set(9000, true)

  t.same(bits.toBuffer(), Buffer.concat([bits.pages.get(0).buffer, bits.pages.get(1).buffer]))
  t.end()
})

tape('pass in buffer', function (t) {
  var bits = bitfield()

  bits.set(0, true)
  bits.set(9000, true)

  var clone = bitfield(bits.toBuffer())

  t.same(clone.get(0), true)
  t.same(clone.get(9000), true)
  t.end()
})

tape('set small buffer', function (t) {
  var buf = alloc(1)
  buf[0] = 255
  var bits = bitfield(buf)

  t.same(bits.get(0), true)
  t.same(bits.pages.get(0).buffer.length, bits.pageSize)
  t.end()
})