1
1
package difflicioustest
2
2
3
3
import munit .ScalaCheckSuite
4
+ import DifferAutoDerivationSpec .P1
4
5
5
6
class DifferAutoDerivationSpec extends ScalaCheckSuite {
6
7
test(" should not compile without instance in scope" ) {
7
- val result = compileErrors("""
8
+ val result = compileErrors(
9
+ """
8
10
import difflicious._
9
11
final case class P1(f1: String)
10
12
@@ -14,35 +16,28 @@ class DifferAutoDerivationSpec extends ScalaCheckSuite {
14
16
""" )
15
17
assertNoDiff(
16
18
result,
17
- """ error:
18
- |No given instance of type difflicious.Differ[P1] was found for parameter differ of method apply in object Differ
19
- |
20
- |The following import might fix the problem:
21
- |
22
- | import difflicious.generic.auto.autoDerived
23
- |
19
+ """ error: No given instance of type difflicious.Differ[P1] was found for parameter differ of method apply in object Differ
24
20
| Differ[P1].diff(P1("a"), P1("b"))
25
21
| ^
26
22
|""" .stripMargin
27
23
)
28
24
}
29
25
test(" should find auto derived instance for product" ) {
30
- val result = compileErrors("""
26
+ val result = compileErrors(
27
+ """
31
28
import difflicious._
32
29
import difflicious.generic.auto.given
33
-
34
- final case class P1(f1: String)
35
30
36
31
Differ[P1].diff(P1("a"), P1("b"))
37
32
""" )
38
33
assertNoDiff(result, " " )
39
34
}
40
35
test(" should put auto derived instance back into scope" ) {
41
- val result = compileErrors("""
36
+ val result = compileErrors(
37
+ """
42
38
import difflicious._
43
39
import difflicious.generic.auto.given
44
40
45
- final case class P1(f1: String)
46
41
implicit val d: Differ[P1] = implicitly[Derived[P1]].differ
47
42
48
43
Differ[P1].diff(P1("a"), P1("b"))
@@ -54,11 +49,15 @@ class DifferAutoDerivationSpec extends ScalaCheckSuite {
54
49
import difflicious .generic .auto ._
55
50
import difflicious .generic .auto .given
56
51
57
- final case class P1 (f1 : String , f2 : String )
58
- final case class P2 (p1 : P1 )
59
- implicit val d : Differ [P1 ] = implicitly[Derived [P1 ]].differ.ignoreAt(_.f1)
52
+ final case class Pi (f1 : String , f2 : String )
53
+ final case class P2 (p1 : Pi )
54
+ implicit val d : Differ [Pi ] = implicitly[Derived [Pi ]].differ.ignoreAt(_.f1)
60
55
61
- val r = Differ [P2 ].diff(P2 (P1 (" a" , " a" )), P2 (P1 (" b" , " a" )))
56
+ val r = Differ [P2 ].diff(P2 (Pi (" a" , " a" )), P2 (Pi (" b" , " a" )))
62
57
assertEquals(r.isOk, true )
63
58
}
64
59
}
60
+
61
+ object DifferAutoDerivationSpec {
62
+ final case class P1 (f1 : String )
63
+ }
0 commit comments