11import ai .x .diff ._
22import scala .collection .immutable .SortedMap
3+ sealed trait Parent
4+ case class Bar ( s : String , i : Int ) extends Parent
5+ case class Foo ( bar : Bar , b : List [Int ], parent : Option [Parent ] ) extends Parent
6+
7+ case class Id (int : Int )
8+ case class Row (id : Id , value : String )
39object Main extends App {
4- sealed trait Parent
5- case class Bar ( s : String , i : Int ) extends Parent
6- case class Foo ( bar : Bar , b : List [Int ], parent : Option [Parent ] ) extends Parent
10+ val bar = Bar (" test" ,1 )
11+ val barAsParent : Parent = bar
12+ val foo = Foo ( bar, Nil , None )
13+ val fooAsParent : Parent = foo
14+
15+ assert( DiffShow .diff( bar, bar ).isIdentical )
16+ assert( DiffShow .diff( barAsParent, barAsParent ).isIdentical )
17+ assert( DiffShow .diff( bar, barAsParent ).isIdentical )
18+ assert( DiffShow .diff( barAsParent, bar ).isIdentical )
19+ assert( DiffShow .diff( foo, foo ).isIdentical )
20+ assert( DiffShow .diff( foo, fooAsParent ).isIdentical )
21+ assert( DiffShow .diff( fooAsParent, foo ).isIdentical )
22+ assert( DiffShow .diff( fooAsParent, fooAsParent ).isIdentical )
23+
24+ assert( ! DiffShow .diff[Parent ]( bar, foo ).isIdentical )
25+ assert( ! DiffShow .diff( bar, fooAsParent ).isIdentical )
26+ assert( ! DiffShow .diff( barAsParent, foo ).isIdentical )
27+ assert( ! DiffShow .diff( barAsParent, fooAsParent ).isIdentical )
28+
29+ assert( DiffShow .diff( Seq (bar), Seq (bar) ).isIdentical )
30+ // Seqs are compared as Sets
31+ assert( DiffShow .diff( Seq (bar), Seq (bar,bar) ).isIdentical )
732
33+ assert( ! DiffShow .diff[Seq [Parent ]]( Seq (foo,bar), Seq (bar) ).isIdentical )
34+ assert( ! DiffShow .diff[Seq [Parent ]]( Seq (foo), Seq (bar) ).isIdentical )
35+
36+ def ignore [T ] = new DiffShow [T ] {
37+ def show ( t : T ) = t.toString
38+ def diff ( left : T , right : T ) = Identical ( " <not compared>" )
39+ override def diffable ( left : T , right : T ) = true
40+ }
41+
42+ {
43+ implicit val ignoreId = ignore[Id ]
44+ assert( DiffShow .diff( Id (1 ), Id (1 ) ).isIdentical )
45+ assert( DiffShow .diff( Id (1 ), Id (2 ) ).isIdentical )
46+
47+ val rowA = Row (Id (1 )," foo" )
48+ val rowB = Row (Id (2 )," foo" )
49+ assert( DiffShow .diff( rowA, rowB ).isIdentical )
50+ assert( DiffShow .diff( Seq (rowA), Seq (rowB) ).isIdentical )
51+ }
52+
53+ assert( DiffShow .diff( Id (1 ), Id (1 ) ).isIdentical )
54+ assert( ! DiffShow .diff( Id (1 ), Id (2 ) ).isIdentical )
55+
56+ val rowA = Row (Id (1 )," foo" )
57+ val rowB = Row (Id (2 )," foo" )
58+ assert( ! DiffShow .diff( rowA, rowB ).isIdentical )
59+ assert( ! DiffShow .diff( Seq (rowA), Seq (rowB) ).isIdentical )
60+
61+ /*
862 val before: Foo = Foo(
963 Bar( "asdf", 5 ),
1064 List( 123, 1234 ),
@@ -19,6 +73,7 @@ object Main extends App {
1973 println(
2074 DiffShow.diff( before, after ).string
2175 )
76+ */
2277
2378 {
2479 implicit def StringDiffShow = new DiffShow [String ] {
0 commit comments