All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.virtuslab.ideprobe.protocol.TestScope.scala Maven / Gradle / Ivy

There is a newer version: 0.53.0
Show newest version
package org.virtuslab.ideprobe.protocol

import org.virtuslab.ideprobe.ConfigFormat
import pureconfig.{ConfigReader, ConfigWriter}
import pureconfig.generic.semiauto.{deriveReader, deriveWriter}

sealed abstract class TestScope(val module: ModuleRef)

object TestScope extends ConfigFormat {
  case class Module(override val module: ModuleRef) extends TestScope(module)
  case class Directory(override val module: ModuleRef, directoryName: String) extends TestScope(module)
  case class Package(override val module: ModuleRef, packageName: String) extends TestScope(module)
  case class Class(override val module: ModuleRef, className: String) extends TestScope(module)
  case class Method(override val module: ModuleRef, className: String, methodName: String) extends TestScope(module)

  implicit val testScopeConfigReader: ConfigReader[TestScope] = {
    possiblyAmbiguousAdtReader[TestScope](
      deriveReader[Method],
      deriveReader[Class],
      deriveReader[Package],
      deriveReader[Directory],
      deriveReader[Module]
    )
  }

  implicit val testScopeConfigWriter: ConfigWriter[TestScope] = {
    possiblyAmbiguousAdtWriter[TestScope](
      deriveWriter[Method],
      deriveWriter[Class],
      deriveWriter[Package],
      deriveWriter[Directory],
      deriveWriter[Module]
    )
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy