-
-
Notifications
You must be signed in to change notification settings - Fork 109
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
Comparisons don't work as expected with the ES6 / ES2015 Set object #28
Comments
It seems that node core assert.deepEqual has the same bug. Here's how it behaves on node 5.1.0:
|
Relevant node core discussion: nodejs/node#2309 This is a bit of a tricky decision, since node-deep-equal is meant to implement node's |
I guess it's ultimately up to you, @substack, whether you want to follow their lead or not. @domenic suggested that node's In this package, however, I think you do have a little more flexibility. For starters, in the Additionally, including support for more native data types here is an enhancement, so it won't break existing code. If you rename the repo from In any case, ultimately we'll need a Just a few thoughts. Hope it helps. |
I'm not really sure in general that deepEqual is the right name for something that compares things based on their private state. You'd want something like "structurallyEqual" or "privateEqual" I think. Map, Set, Date, and Promise are all types which you could invent equality semantics for based on examining whether they have the same internal data, but "deep equal" traditionally means "has the same public properties" which will be true of any two Maps etc. |
To sum things up: I need a way to write test assertions to compare the values in two ES2015 Sets. I really like @mjackson's cc: @statianzo |
Update: We don't have this issue anymore in the expect package since we switched to https://github.com/ljharb/is-equal. Thanks for your time :) |
@mjackson So I can compare Sets in the same way I compare arrays? Awesome! Thank you. |
I encountered this problem using tape today. While the node team decided to take their ball and go home, it seems that tape (and this package) are left on the lonely playground they call "userland". It's probably small-minded of me but I can't see a good reason a test assertion would want to find all Set objects "equal", and it sure would be nice if this library did the Right Thing rather than imitate its namesake's failings. |
Scott, grow up. Your tone here is ridiculous.
|
My tone is light and playful, but sincere. I can switch testing and/or assertion libraries but before I do that, I would like to add a vote on the side of usefulness over semantics. If Set seems like too much of a special case, consider solving it for the iterable protocol. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable |
Is there anything in the works for this? I'm doing deepEqual on something that contains a map, having to run my expected and result objects through something that unwraps a map into it's array version is rather cumbersome. Maybe a separate assertion that uses isEqual? |
Issue
I'm using the
expect
package from npm, which uses this package under the hood to check for deep equality. In my eyes, the test below should fail (different values and different references), but it is passing:If I did something like this with another collection (like arrays), the test wouldn't pass until 1) the references are the same with assert.equal / , expect.toBe or 2) the values are the same with assert.deepEqual / expect.toEqual
Background
I'm using Babel 5 to use Set. I'm using Node 5, so the Set being used should be native.
Am I doing something wrong, or does this look like a bug in the
expect
package in the way it handles Sets? I've cross posted a Stack Overflow question as I'm not sure.I originally posted this on the
expect
package issues, but they sent me here, since that package uses this package ;)mjackson/expect#47 (comment)
cc: @mjackson, @rstacruz
The text was updated successfully, but these errors were encountered: