@@ -13,6 +13,12 @@ type U =
13
13
| U2 of x : int * y : int
14
14
type Bar = { aaa: Foo ; bbb: U }
15
15
16
+ type Baz = { xx: int ; yy: string }
17
+
18
+ [<AllowNullLiteral>]
19
+ type Class ( x : int ) =
20
+ member _.X = x
21
+
16
22
let assertStr ( expected : string , actual : string ) =
17
23
Assert.Equal( expected.Replace( " \r\n " , " \n " ), actual)
18
24
@@ -27,6 +33,62 @@ let ``Exception for non-equal values`` (x: Bar) (y: Bar) =
27
33
Differ.Assert( x, y))
28
34
|> ignore
29
35
36
+ [<Fact>]
37
+ let ``Both have null leaf`` () =
38
+ let actual = Differ.Diff({ xx = 1 ; yy = null }, { xx = 1 ; yy = null })
39
+ Assert.Equal( None, actual)
40
+
41
+ [<Fact>]
42
+ let ``Expected has null leaf`` () =
43
+ let actual = Differ.Diff({ xx = 1 ; yy = null }, { xx = 1 ; yy = " a" })
44
+ Assert.Equal( Some( Diff.Record [ { Name = " yy" ; Diff = Diff.Value( null , " a" ) } ]), actual)
45
+
46
+ let actual = Differ.ToString({ xx = 1 ; yy = null }, { xx = 1 ; yy = " a" })
47
+ assertStr( " \
48
+ yy Expect is null
49
+ Actual = \" a\"
50
+ " , actual)
51
+
52
+ [<Fact>]
53
+ let ``Actual has null leaf`` () =
54
+ let actual = Differ.Diff({ xx = 1 ; yy = " a" }, { xx = 1 ; yy = null })
55
+ Assert.Equal( Some( Diff.Record [ { Name = " yy" ; Diff = Diff.Value( " a" , null ) } ]), actual)
56
+
57
+ let actual = Differ.ToString({ xx = 1 ; yy = " a" }, { xx = 1 ; yy = null })
58
+ assertStr( " \
59
+ yy Expect = \" a\"
60
+ Actual is null
61
+ " , actual)
62
+
63
+ [<Fact>]
64
+ let ``Both are null`` () =
65
+ let actual = Differ.Diff(( null : Class), null )
66
+ Assert.Equal( None, actual)
67
+
68
+ [<Fact>]
69
+ let ``Expected is null`` () =
70
+ let actualValue = Class( 3 )
71
+ let actual = Differ.Diff( null , actualValue)
72
+ Assert.Equal( Some( Diff.Nullness( null , actualValue)), actual)
73
+
74
+ let actual = Differ.ToString( null , actualValue)
75
+ assertStr( " \
76
+ Expect is null
77
+ Actual is not null
78
+ " , actual)
79
+
80
+ [<Fact>]
81
+ let ``Actual is null`` () =
82
+ let actualValue = Class( 3 )
83
+ let actual = Differ.Diff( actualValue, null )
84
+ Assert.Equal( Some( Diff.Nullness( actualValue, null )), actual)
85
+
86
+ let actual = Differ.ToString( actualValue, null )
87
+ assertStr( " \
88
+ Expect is not null
89
+ Actual is null
90
+ " , actual)
91
+
30
92
[<Property>]
31
93
let ``List diff`` ( l1 : int list ) ( l2 : int list ) =
32
94
let d = Differ.Diff( l1, l2)
0 commit comments