@@ -627,7 +627,7 @@ defmodule ExUnit.DiffTest do
627
627
)
628
628
end
629
629
630
- test "structs with inspect difference " do
630
+ test "structs with same inspect but different " do
631
631
refute_diff (
632
632
% Opaque { data: 1 } = % Opaque { data: 2 } ,
633
633
"%ExUnit.DiffTest.Opaque{data: -1-}" ,
@@ -641,7 +641,7 @@ defmodule ExUnit.DiffTest do
641
641
)
642
642
end
643
643
644
- test "structs without inspect difference outside match" do
644
+ test "structs with same inspect but different outside match" do
645
645
refute_diff (
646
646
% Opaque { data: 1 } == % Opaque { data: 2 } ,
647
647
"%ExUnit.DiffTest.Opaque{data: -1-}" ,
@@ -663,6 +663,66 @@ defmodule ExUnit.DiffTest do
663
663
)
664
664
end
665
665
666
+ test "structs with matched type" do
667
+ pins = % { { :type , nil } => User , { :age , nil } => 33 }
668
+
669
+ # pin on __struct__
670
+ assert_diff (
671
+ % { __struct__: ^ type , age: ^ age , name: "john" } = % User { name: "john" , age: 33 } ,
672
+ [ ] ,
673
+ pins
674
+ )
675
+
676
+ refute_diff (
677
+ % { __struct__: ^ type , age: ^ age , name: "john" } = % User { name: "jane" , age: 33 } ,
678
+ "%{__struct__: ^type, age: ^age, name: \" j-oh-n\" }" ,
679
+ "%ExUnit.DiffTest.User{age: 33, name: \" j+a+n+e+\" }" ,
680
+ pins
681
+ )
682
+
683
+ refute_diff (
684
+ % { __struct__: ^ type , age: ^ age , name: "john" } = % User { name: "john" , age: 35 } ,
685
+ "%{__struct__: ^type, age: -^age-, name: \" john\" }" ,
686
+ "%ExUnit.DiffTest.User{age: 3+5+, name: \" john\" }" ,
687
+ pins
688
+ )
689
+
690
+ refute_diff (
691
+ % { __struct__: ^ type , age: ^ age , name: "john" } = ~D[ 2020-01-01] ,
692
+ "%{__struct__: -^type-, -age: ^age-, -name: \" john\" -}" ,
693
+ "%+Date+{calendar: Calendar.ISO, day: 1, month: 1, year: 2020}" ,
694
+ pins
695
+ )
696
+
697
+ # pin on %
698
+ assert_diff (
699
+ % ^ type { age: ^ age , name: "john" } = % User { name: "john" , age: 33 } ,
700
+ [ ] ,
701
+ pins
702
+ )
703
+
704
+ refute_diff (
705
+ % ^ type { age: ^ age , name: "john" } = % User { name: "jane" , age: 33 } ,
706
+ "%{__struct__: ^type, age: ^age, name: \" j-oh-n\" }" ,
707
+ "%ExUnit.DiffTest.User{age: 33, name: \" j+a+n+e+\" }" ,
708
+ pins
709
+ )
710
+
711
+ refute_diff (
712
+ % ^ type { age: ^ age , name: "john" } = % User { name: "john" , age: 35 } ,
713
+ "%{__struct__: ^type, age: -^age-, name: \" john\" }" ,
714
+ "%ExUnit.DiffTest.User{age: 3+5+, name: \" john\" }" ,
715
+ pins
716
+ )
717
+
718
+ refute_diff (
719
+ % ^ type { age: ^ age , name: "john" } = ~D[ 2020-01-01] ,
720
+ "%{__struct__: -^type-, -age: ^age-, -name: \" john\" -}" ,
721
+ "%+Date+{calendar: Calendar.ISO, day: 1, month: 1, year: 2020}" ,
722
+ pins
723
+ )
724
+ end
725
+
666
726
test "invalid structs" do
667
727
refute_diff (
668
728
% { __struct__: Unknown } = % { } ,
0 commit comments