@@ -12,14 +12,16 @@ describe('Equality', () => {
12
12
13
13
function expectIs ( left , right ) {
14
14
var comparison = Immutable . is ( left , right ) ;
15
+ expect ( comparison ) . toBe ( true ) ;
15
16
var commutative = Immutable . is ( right , left ) ;
16
- return comparison && commutative && comparison === commutative ;
17
+ expect ( commutative ) . toBe ( true ) ;
17
18
}
18
19
19
20
function expectIsNot ( left , right ) {
20
21
var comparison = Immutable . is ( left , right ) ;
22
+ expect ( comparison ) . toBe ( false ) ;
21
23
var commutative = Immutable . is ( right , left ) ;
22
- return ! comparison && ! commutative && comparison === commutative ;
24
+ expect ( commutative ) . toBe ( false ) ;
23
25
}
24
26
25
27
it ( 'uses Object.is semantics' , ( ) => {
@@ -36,7 +38,9 @@ describe('Equality', () => {
36
38
expectIs ( NaN , NaN ) ;
37
39
expectIs ( 0 , 0 ) ;
38
40
expectIs ( - 0 , - 0 ) ;
39
- expectIsNot ( 0 , - 0 ) ;
41
+ // Note: Unlike Object.is, Immutable.is assumes 0 and -0 are the same value,
42
+ // matching the behavior of ES6 Map key equality.
43
+ expectIs ( 0 , - 0 ) ;
40
44
expectIs ( NaN , 0 / 0 ) ;
41
45
42
46
var string = "hello" ;
@@ -54,6 +58,35 @@ describe('Equality', () => {
54
58
expectIsNot ( object , { key :'value' } ) ;
55
59
} ) ;
56
60
61
+ it ( 'dereferences things' , ( ) => {
62
+ var ptrA = { foo : 1 } , ptrB = { foo : 2 } ;
63
+ expectIsNot ( ptrA , ptrB ) ;
64
+ ptrA . valueOf = ptrB . valueOf = function ( ) {
65
+ return 5 ;
66
+ }
67
+ expectIs ( ptrA , ptrB ) ;
68
+ var object = { key :'value' } ;
69
+ ptrA . valueOf = ptrB . valueOf = function ( ) {
70
+ return object ;
71
+ }
72
+ expectIs ( ptrA , ptrB ) ;
73
+ ptrA . valueOf = ptrB . valueOf = function ( ) {
74
+ return null ;
75
+ }
76
+ expectIs ( ptrA , ptrB ) ;
77
+ ptrA . valueOf = ptrB . valueOf = function ( ) {
78
+ return void 0 ;
79
+ }
80
+ expectIs ( ptrA , ptrB ) ;
81
+ ptrA . valueOf = function ( ) {
82
+ return 4 ;
83
+ }
84
+ ptrB . valueOf = function ( ) {
85
+ return 5 ;
86
+ }
87
+ expectIsNot ( ptrA , ptrB ) ;
88
+ } ) ;
89
+
57
90
it ( 'compares sequences' , ( ) => {
58
91
var arraySeq = Immutable . Seq . of ( 1 , 2 , 3 ) ;
59
92
var arraySeq2 = Immutable . Seq ( [ 1 , 2 , 3 ] ) ;
0 commit comments