'use strict';

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

const actualKeys = new Set(Object.keys(process.features));
const expectedKeys = new Map([
  ['inspector', ['boolean']],
  ['debug', ['boolean']],
  ['uv', ['boolean']],
  ['ipv6', ['boolean']],
  ['openssl_is_boringssl', ['boolean']],
  ['quic', ['boolean', 'undefined']],
  ['tls_alpn', ['boolean']],
  ['tls_sni', ['boolean']],
  ['tls_ocsp', ['boolean']],
  ['tls', ['boolean']],
  ['cached_builtins', ['boolean']],
  ['require_module', ['boolean']],
  ['typescript', ['boolean', 'string']],
]);

assert.deepStrictEqual(actualKeys, new Set(expectedKeys.keys()));

for (const [key, expected] of expectedKeys) {
  assert.ok(expected.includes(typeof process.features[key]), `typeof process.features.${key} is not one of [${expected.join(', ')}]`);
}
