summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/FinalizationRegistry/prototype/register/return-undefined-register-symbol.js
blob: 8c8a9444293f66e4f3918c785c701e0adfee48e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// |reftest| shell-option(--enable-symbols-as-weakmap-keys) skip-if(release_or_beta||!this.hasOwnProperty('FinalizationRegistry')||!xulRuntime.shell) -- symbols-as-weakmap-keys is not released yet, FinalizationRegistry is not enabled unconditionally, requires shell-options
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-finalization-registry.prototype.register
description: Return undefined after registering a Symbol
info: |
  FinalizationRegistry.prototype.register ( _target_ , _heldValue_ [, _unregisterToken_ ] )
  8. Return *undefined*.
features: [FinalizationRegistry, Symbol, symbols-as-weakmap-keys]
---*/

var fn = function() {};
var reg = new FinalizationRegistry(fn);

var target = Symbol('a description');
assert.sameValue(reg.register(target), undefined, 'Register a regular symbol');
assert.sameValue(reg.register(target), undefined, 'Register the same symbol again');
assert.sameValue(reg.register(target), undefined, 'Register the same symbol a third time');

assert.sameValue(
  reg.register(Symbol('a description')),
  undefined,
  'Register another symbol with the same description'
);
assert.sameValue(
  reg.register(Symbol('a different description')),
  undefined,
  'Register another symbol with another description'
);

assert.sameValue(
  reg.register(target, undefined, Symbol('unregister token')),
  undefined,
  'Register a regular symbol with a symbol unregister token'
);
assert.sameValue(
  reg.register(target, undefined, target),
  undefined,
  'Register a regular symbol with itself as the unregister token'
);

assert.sameValue(
  reg.register(target, undefined, undefined),
  undefined,
  'Register a regular symbol with explicit undefined unregister token'
);

assert.sameValue(reg.register(Symbol.hasInstance), undefined, 'Register a well-known symbol');
assert.sameValue(reg.register(Symbol.hasInstance), undefined, 'Register the same well-known symbol again');
assert.sameValue(reg.register(Symbol.hasInstance), undefined, 'Register the same well-known symbol a third time');

assert.sameValue(
  reg.register(target, undefined, Symbol.hasInstance),
  undefined,
  'Register a regular symbol with a well-known symbol unregister token'
);
assert.sameValue(
  reg.register(Symbol.hasInstance, undefined, Symbol.iterator),
  undefined,
  'Register a well-known symbol with a different well-known symbol as unregister token'
);
assert.sameValue(
  reg.register(Symbol.hasInstance, undefined, Symbol.hasInstance),
  undefined,
  'Register a well-known symbol with itself as the unregister token'
);

assert.sameValue(
  reg.register(Symbol.hasInstance, undefined, undefined),
  undefined,
  'Register a well-known symbol with explicit undefined unregister token'
);

reportCompare(0, 0);