bizzabo / diff

Visually compare Scala data structures with out of the box support for arbitrary case classes.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Comparing Arrays throws an Exception

angelcervera opened this issue · comments

Test with Array of bytes:

  "diff Arrays of bytes" in {
    case class CaseClassWithArrayBytes(id: String, hash: Option[Array[Byte]])

    import ai.x.diff.DiffShow
    import ai.x.diff.conversions._
    println(
      DiffShow.diff[CaseClassWithArrayBytes](
        CaseClassWithArrayBytes("A", Some( Array[Byte](192.toByte, 168.toByte) )),
        CaseClassWithArrayBytes("B", Some( Array[Byte](192.toByte, 168.toByte) ))
      ).toString
    )

  }

It prints the exception:

Different(CaseClassWithArrayBytes$3(
  hash = Some(
    java.lang.Exception: ERROR: Cannot find DiffShow[Array[byte]] to show values ([B@13a37e2a, [B@a50ae65)
    	at ai.x.diff.DiffShowInstancesLowPriority$$anon$4.diff(diff.scala:110)
    	at ai.x.diff.DiffShowInstancesLowPriority$$anon$4.diff(diff.scala:106)
    	at ai.x.diff.DiffShow$.diff(diff.scala:64)
    	at ai.x.diff.DiffShowInstances$$anon$5.diff(diff.scala:122)
    	at ai.x.diff.DiffShowInstances$$anon$5.diff(diff.scala:115)
    	at ai.x.diff.DiffShow$.diff(diff.scala:64)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:99)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:95)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:99)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:95)
    	at ai.x.diff.DiffShowInstances$CaseClassDiffShow.diff(diff.scala:201)
    	at ai.x.diff.DiffShow$.diff(diff.scala:64)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest$$anonfun$2.apply$mcV$sp(CompareDatasetsTest.scala:30)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest$$anonfun$2.apply(CompareDatasetsTest.scala:24)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest$$anonfun$2.apply(CompareDatasetsTest.scala:24)
    	at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
    	at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
    	at org.scalatest.Transformer.apply(Transformer.scala:22)
    	at org.scalatest.Transformer.apply(Transformer.scala:20)
    	at org.scalatest.WordSpecLike$$anon$1.apply(WordSpecLike.scala:1078)
    	at org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.withFixture(CompareDatasetsTest.scala:7)
    	at org.scalatest.WordSpecLike$class.invokeWithFixture$1(WordSpecLike.scala:1075)
    	at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:1088)
    	at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:1088)
    	at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
    	at org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:1088)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.runTest(CompareDatasetsTest.scala:7)
    	at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1147)
    	at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1147)
    	at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396)
    	at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384)
    	at scala.collection.immutable.List.foreach(List.scala:381)
    	at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
    	at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379)
    	at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461)
    	at org.scalatest.WordSpecLike$class.runTests(WordSpecLike.scala:1147)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.runTests(CompareDatasetsTest.scala:7)
    	at org.scalatest.Suite$class.run(Suite.scala:1147)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.org$scalatest$WordSpecLike$$super$run(CompareDatasetsTest.scala:7)
    	at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1192)
    	at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1192)
    	at org.scalatest.SuperEngine.runImpl(Engine.scala:521)
    	at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1192)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.run(CompareDatasetsTest.scala:7)
    	at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45)
    	at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1346)
    	at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1340)
    	at scala.collection.immutable.List.foreach(List.scala:381)
    	at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1340)
    	at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011)
    	at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010)
    	at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1506)
    	at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010)
    	at org.scalatest.tools.Runner$.run(Runner.scala:850)
    	at org.scalatest.tools.Runner.run(Runner.scala)
    	at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:131)
    	at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
  
  ),
  id = "A" -> "B"
))

Test with Array of Strings:

  "diff Arrays of String" in {
    case class CaseClassWithArrayStrings(id: String, hash: Option[Array[String]])

    import ai.x.diff.DiffShow
    import ai.x.diff.conversions._
    println(
      DiffShow.diff[CaseClassWithArrayStrings](
        CaseClassWithArrayStrings("A", Some( Array[String]("A","B") )),
        CaseClassWithArrayStrings("B", Some( Array[String]("A", "B") ))
      ).toString
    )
  }

Prints the exception:

Different(CaseClassWithArrayStrings$3(
  hash = Some(
    java.lang.Exception: ERROR: Cannot find DiffShow[Array[java.lang.String]] to show values ([Ljava.lang.String;@18324f97, [Ljava.lang.String;@64f555e7)
    	at ai.x.diff.DiffShowInstancesLowPriority$$anon$4.diff(diff.scala:110)
    	at ai.x.diff.DiffShowInstancesLowPriority$$anon$4.diff(diff.scala:106)
    	at ai.x.diff.DiffShow$.diff(diff.scala:64)
    	at ai.x.diff.DiffShowInstances$$anon$5.diff(diff.scala:122)
    	at ai.x.diff.DiffShowInstances$$anon$5.diff(diff.scala:115)
    	at ai.x.diff.DiffShow$.diff(diff.scala:64)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:99)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:95)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:99)
    	at ai.x.diff.DiffShowFields$$anon$3.diff(diff.scala:95)
    	at ai.x.diff.DiffShowInstances$CaseClassDiffShow.diff(diff.scala:201)
    	at ai.x.diff.DiffShow$.diff(diff.scala:64)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest$$anonfun$3.apply$mcV$sp(CompareDatasetsTest.scala:43)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest$$anonfun$3.apply(CompareDatasetsTest.scala:37)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest$$anonfun$3.apply(CompareDatasetsTest.scala:37)
    	at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
    	at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
    	at org.scalatest.Transformer.apply(Transformer.scala:22)
    	at org.scalatest.Transformer.apply(Transformer.scala:20)
    	at org.scalatest.WordSpecLike$$anon$1.apply(WordSpecLike.scala:1078)
    	at org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.withFixture(CompareDatasetsTest.scala:7)
    	at org.scalatest.WordSpecLike$class.invokeWithFixture$1(WordSpecLike.scala:1075)
    	at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:1088)
    	at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:1088)
    	at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
    	at org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:1088)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.runTest(CompareDatasetsTest.scala:7)
    	at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1147)
    	at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1147)
    	at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396)
    	at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384)
    	at scala.collection.immutable.List.foreach(List.scala:381)
    	at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
    	at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379)
    	at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461)
    	at org.scalatest.WordSpecLike$class.runTests(WordSpecLike.scala:1147)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.runTests(CompareDatasetsTest.scala:7)
    	at org.scalatest.Suite$class.run(Suite.scala:1147)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.org$scalatest$WordSpecLike$$super$run(CompareDatasetsTest.scala:7)
    	at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1192)
    	at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1192)
    	at org.scalatest.SuperEngine.runImpl(Engine.scala:521)
    	at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1192)
    	at com.dnb.optimus.prime.report.CompareDatasetsTest.run(CompareDatasetsTest.scala:7)
    	at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45)
    	at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1346)
    	at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1340)
    	at scala.collection.immutable.List.foreach(List.scala:381)
    	at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1340)
    	at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011)
    	at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010)
    	at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1506)
    	at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010)
    	at org.scalatest.tools.Runner$.run(Runner.scala:850)
    	at org.scalatest.tools.Runner.run(Runner.scala)
    	at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:131)
    	at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
  
  ),
  id = "A" -> "B"
))