// deno-fmt-ignore-file
// deno-lint-ignore-file

// Copyright Joyent and Node contributors. All rights reserved. MIT license.
// Taken from Node 20.11.1
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.

'use strict';
require('../common');
const assert = require('assert');

function range(n) {
  return 'x'.repeat(n + 1).split('').map(function(_, i) { return i; });
}

function timeout(nargs) {
  const args = range(nargs);
  setTimeout.apply(null, [callback, 1].concat(args));

  function callback() {
    assert.deepStrictEqual([].slice.call(arguments), args);
    if (nargs < 128) timeout(nargs + 1);
  }
}

function interval(nargs) {
  const args = range(nargs);
  const timer = setTimeout.apply(null, [callback, 1].concat(args));

  function callback() {
    clearInterval(timer);
    assert.deepStrictEqual([].slice.call(arguments), args);
    if (nargs < 128) interval(nargs + 1);
  }
}

timeout(0);
interval(0);