on master help sign in
Merge pull request #619 from maxsnew/eq
24ab294Evan Czaplicki
libraries/Native/Utils.js+10−1
@@ -16,7 +16,16 @@ Elm.Native.Utils.make = function(elm) {
16 var c = 0;
16 var c = 0;
17 for (var i in x) {
17 for (var i in x) {
18 ++c;
18 ++c;
19+ if (i in y) {
20+ if (i !== 'ctor') {
19− stack.push({ 'x': x[i], 'y': y[i] });
21+ stack.push({ 'x': x[i], 'y': y[i] });
22+ }
23+ } else {
24+ return false;
25+ }
26+ }
27+ if ('ctor' in x) {
28+ stack.push({'x': x.ctor, 'y': y.ctor});
20 }
29 }
21 if (c !== Object.keys(y).length) {
30 if (c !== Object.keys(y).length) {
22 return false;
31 return false;
tests/elm/Test.elm+2
@@ -11,6 +11,7 @@ import IO.Runner as Run
11
11
12import Test.Array as Array
12import Test.Array as Array
13import Test.Dict as Dict
13import Test.Dict as Dict
14+import Test.Eq as Eq
14import Test.List as List
15import Test.List as List
15import Test.Set as Set
16import Test.Set as Set
16import Test.String as String
17import Test.String as String
@@ -18,6 +19,7 @@ import Test.Trampoline as Trampoline
18
19
19tests : Test
20tests : Test
20tests = suite "Elm Standard Library Tests" [ List.tests,
21tests = suite "Elm Standard Library Tests" [ List.tests,
22+ Eq.tests,
21 String.tests,
23 String.tests,
22 Trampoline.tests,
24 Trampoline.tests,
23 Array.tests,
25 Array.tests,
tests/elm/Test/Eq.elmnew file+22
@@ -0,0 +1,22 @@
1+module Test.Eq (tests) where
2+
3+import ElmTest.Assertion (..)
4+import ElmTest.Test (..)
5+
6+data Different = A String
7+ | B [Int]
8+
9+tests : Test
10+tests =
11+ let diff_tests = suite "sum type eq"
12+ [ test "As eq" <| assert (A "a" == A "a")
13+ , test "Bs eq" <| assert (B [1] == B [1])
14+ , test "A left neq" <| assert . not <| (A "a" == B [1])
15+ , test "A left neq" <| assert . not <| (B [1] == A "a")
16+ ]
17+ record_tests = suite "record type eq"
18+ [ test "empty same" <| assert ({} == {})
19+ , test "ctor same" <| assert ({ctor = Just 3} == {ctor = Just 3})
20+ , test "ctor diff" . assert . not <| ({ctor = Just 3} == {ctor = Nothing})
21+ ]
22+ in suite "Equality Tests" [diff_tests, record_tests]