-
Notifications
You must be signed in to change notification settings - Fork 29.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
doc: document asserts Weak(Map|Set) behavior #18248
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -213,6 +213,8 @@ are recursively evaluated also by the following rules. | |
* Map keys and Set items are compared unordered. | ||
* Recursion stops when both sides differ or both sides encounter a circular | ||
reference. | ||
* [`WeakMap`][] and [`WeakSet`][] will return true, no matter what values they | ||
contain. | ||
|
||
```js | ||
const assert = require('assert').strict; | ||
|
@@ -254,6 +256,16 @@ assert.deepStrictEqual({ [symbol1]: 1 }, { [symbol1]: 1 }); | |
// OK, because it is the same symbol on both objects. | ||
assert.deepStrictEqual({ [symbol1]: 1 }, { [symbol2]: 1 }); | ||
// Fails because symbol1 !== symbol2! | ||
|
||
const weakMap1 = new WeakMap(); | ||
const weakMap2 = new WeakMap([[{}, {}]]); | ||
const weakMap3 = new WeakMap(); | ||
weakMap3.unequal = true; | ||
|
||
assert.deepStrictEqual(weakMap1, weakMap2); | ||
// OK, because it is impossible to compare the entries | ||
assert.deepStrictEqual(weakMap1, weakMap3); | ||
// Fails because weakMap3 has a property that weakMap1 does not contain! | ||
``` | ||
|
||
If the values are not equal, an `AssertionError` is thrown with a `message` | ||
|
@@ -870,6 +882,8 @@ second argument. This might lead to difficult-to-spot errors. | |
[`Set`]: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set | ||
[`Symbol`]: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol | ||
[`TypeError`]: errors.html#errors_class_typeerror | ||
[`WeakMap`]: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/WeapMap | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. linter errors: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed |
||
[`WeakSet`]: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/WeakSet | ||
[`assert.deepEqual()`]: #assert_assert_deepequal_actual_expected_message | ||
[`assert.deepStrictEqual()`]: #assert_assert_deepstrictequal_actual_expected_message | ||
[`assert.notDeepStrictEqual()`]: #assert_assert_notdeepstrictequal_actual_expected_message | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sentence is not clear. Also can you use the present instead of the future?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
['WeakMap'][] and ['WeakSet'][] comparison does not rely on their values. See below for further details.
?