Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. package com.vinaysshenoy
  2.  
  3. import org.approvaltests.Approvals
  4. import org.approvaltests.approvers.ApprovalApprover
  5. import org.approvaltests.core.ApprovalFailureReporter
  6. import org.approvaltests.core.ApprovalReporterWithCleanUp
  7. import org.approvaltests.core.ApprovalWriter
  8. import org.approvaltests.namer.ApprovalNamer
  9. import org.approvaltests.writers.ImageApprovalWriter
  10. import java.awt.image.BufferedImage
  11. import java.io.File
  12. import javax.imageio.ImageIO
  13.  
  14. class ImageApprover(
  15. namer: ApprovalNamer,
  16. private val writer: ApprovalWriter,
  17. private val minimumSimilarity: Double
  18. ) : ApprovalApprover {
  19.  
  20. private val baseFilePath = "${namer.sourceFilePath}${namer.approvalName}"
  21.  
  22. private val received: File = File(writer.getReceivedFilename(baseFilePath))
  23. private val approved: File = File(writer.getApprovalFilename(baseFilePath))
  24.  
  25. companion object {
  26. fun create(image: BufferedImage, minimumSimilarity: Double): ImageApprover {
  27. return ImageApprover(
  28. namer = Approvals.createApprovalNamer(),
  29. writer = ImageApprovalWriter(image),
  30. minimumSimilarity = minimumSimilarity
  31. )
  32. }
  33. }
  34.  
  35. override fun cleanUpAfterSuccess(reporter: ApprovalFailureReporter) {
  36. received.delete()
  37. (reporter as? ApprovalReporterWithCleanUp)?.cleanUp(received.absolutePath, approved.absolutePath)
  38. }
  39.  
  40. override fun approve(): Boolean {
  41. writer.writeReceivedFile(received.absolutePath)
  42.  
  43. if (!approved.exists() || !received.exists()) {
  44. return false
  45. }
  46.  
  47. val receivedImage = ImageIO.read(received)
  48. val approvedImage = ImageIO.read(approved)
  49.  
  50. val similarity = ImageSimilarity.similarity(receivedImage, approvedImage)
  51. return similarity >= minimumSimilarity
  52. }
  53.  
  54. override fun reportFailure(reporter: ApprovalFailureReporter) {
  55. reporter.report(received.absolutePath, approved.absolutePath)
  56. }
  57.  
  58. override fun fail() {
  59. throw Error("Failed Approval\n Approved:${approved.absolutePath}\n Received:${received.absolutePath}")
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement