Skip to content

Commit

Permalink
chore: api rename
Browse files Browse the repository at this point in the history
  • Loading branch information
williamfzc authored Mar 18, 2021
1 parent 576f49b commit 88d652f
Showing 1 changed file with 73 additions and 69 deletions.
142 changes: 73 additions & 69 deletions randunit/src/main/kotlin/com/williamfzc/randunit/RandUnitBase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,22 @@ import java.io.File
import java.util.logging.Logger

abstract class RandUnitBase : RandUnitBaseImpl() {
companion object {
private val logger = Logger.getGlobal()
}

@JvmOverloads
fun collectStatementsWithPackage(
targetPackage: String,
cfg: ScannerConfig? = null
): Collection<StatementModel> = collectStatements(scanClassesFromPackage(targetPackage), cfg)
): Collection<StatementModel> = collectStatements(collectClassesFromPackage(targetPackage), cfg)

@JvmOverloads
fun collectStatementsWithPackages(
targetPackages: Iterable<String>,
cfg: ScannerConfig? = null
): Collection<StatementModel> =
collectStatements(scanClassesFromPackages(targetPackages), cfg)
collectStatements(collectClassesFromPackages(targetPackages), cfg)

@JvmOverloads
fun runWithTestFactory(
Expand Down Expand Up @@ -71,65 +75,8 @@ abstract class RandUnitBase : RandUnitBaseImpl() {

return dynamicTests
}
}

abstract class RandUnitBaseImpl {
companion object {
private val logger = Logger.getGlobal()
}

abstract fun getOperationManager(): OperationManager

@JvmOverloads
fun collectOperations(
targetClasses: Iterable<Class<*>>,
cfg: ScannerConfig? = null
): List<AbstractOperation> {
val ret = mutableListOf<AbstractOperation>()

class CustomScanner(cfg: ScannerConfig) : Scanner(cfg) {
override fun beforeOperation(
operation: AbstractOperation,
operationManager: OperationManager
) {
ret.add(operation)
}
}

val finalCfg = cfg ?: ScannerConfig()
val opm = getOperationManager()
for (eachClazz in targetClasses)
opm.addClazz(eachClazz)
logger.info("start scanning with cfg: $finalCfg")
CustomScanner(finalCfg).scanAll(opm)
return ret
}

@JvmOverloads
fun collectStatements(
targetClasses: Iterable<Class<*>>,
cfg: ScannerConfig? = null
): List<StatementModel> {
val ret = mutableListOf<StatementModel>()

class CustomScanner(cfg: ScannerConfig) : Scanner(cfg) {
override fun handle(statementModel: StatementModel) {
ret.add(statementModel)
}
}

val finalCfg = cfg ?: ScannerConfig()
val opm = getOperationManager()
for (eachClazz in targetClasses)
opm.addClazz(eachClazz)
logger.info("start scanning with cfg: $finalCfg")
CustomScanner(finalCfg).scanAll(opm)

logger.info(ret.toJson())
return ret
}

fun scanClassesFromPackage(pkgName: String): Iterable<Class<*>> {
fun collectClassesFromPackage(pkgName: String): Iterable<Class<*>> {
// see: https://github.com/ronmamo/reflections/issues/296
val result = mutableSetOf<Class<*>>()
val reflections = Reflections(pkgName)
Expand All @@ -147,13 +94,13 @@ abstract class RandUnitBaseImpl {
return result
}

fun scanClassesFromPackages(packages: Iterable<String>): Iterable<Class<*>> {
fun collectClassesFromPackages(packages: Iterable<String>): Iterable<Class<*>> {
val ret = mutableSetOf<Class<*>>()
packages.forEach { ret.addAll(scanClassesFromPackage(it)) }
packages.forEach { ret.addAll(collectClassesFromPackage(it)) }
return ret
}

fun scanClassesFromStringList(stringList: Iterable<String>): Iterable<Class<*>> {
fun collectClassesFromStringList(stringList: Iterable<String>): Iterable<Class<*>> {
val ret = mutableSetOf<Class<*>>()
stringList.forEach {
try {
Expand All @@ -165,20 +112,20 @@ abstract class RandUnitBaseImpl {
return ret
}

fun scanClassesFromFile(targetFile: File): Iterable<Class<*>> =
scanClassesFromStringList(targetFile.readLines())
fun collectClassesFromFile(targetFile: File): Iterable<Class<*>> =
collectClassesFromStringList(targetFile.readLines())

fun scanOperationFromFile(targetFile: File): Iterable<AbstractOperation> {
fun collectOperationFromFile(targetFile: File): Iterable<AbstractOperation> {
val ret = mutableSetOf<AbstractOperation>()
scanClassesFromFile(targetFile).forEach { ret.add(NormalOperation.of(it)) }
collectClassesFromFile(targetFile).forEach { ret.add(NormalOperation.of(it)) }
return ret
}

@JvmOverloads
fun scanStatementsFromFile(
fun collectStatementsFromFile(
targetFile: File,
cfg: ScannerConfig? = null
): Iterable<StatementModel> = collectStatements(scanClassesFromFile(targetFile), cfg)
): Iterable<StatementModel> = collectStatements(collectClassesFromFile(targetFile), cfg)

fun writeClassesToFile(clzList: Iterable<Class<*>>, targetFile: File) {
targetFile.printWriter().use { out ->
Expand All @@ -200,3 +147,60 @@ abstract class RandUnitBaseImpl {
) =
writeRelativeClassesFromOperationsToFile(statementModels.toOpSet(), targetFile)
}

abstract class RandUnitBaseImpl {
companion object {
private val logger = Logger.getGlobal()
}

abstract fun getOperationManager(): OperationManager

@JvmOverloads
fun collectOperations(
targetClasses: Iterable<Class<*>>,
cfg: ScannerConfig? = null
): List<AbstractOperation> {
val ret = mutableListOf<AbstractOperation>()

class CustomScanner(cfg: ScannerConfig) : Scanner(cfg) {
override fun beforeOperation(
operation: AbstractOperation,
operationManager: OperationManager
) {
ret.add(operation)
}
}

val finalCfg = cfg ?: ScannerConfig()
val opm = getOperationManager()
for (eachClazz in targetClasses)
opm.addClazz(eachClazz)
logger.info("start scanning with cfg: $finalCfg")
CustomScanner(finalCfg).scanAll(opm)
return ret
}

@JvmOverloads
fun collectStatements(
targetClasses: Iterable<Class<*>>,
cfg: ScannerConfig? = null
): List<StatementModel> {
val ret = mutableListOf<StatementModel>()

class CustomScanner(cfg: ScannerConfig) : Scanner(cfg) {
override fun handle(statementModel: StatementModel) {
ret.add(statementModel)
}
}

val finalCfg = cfg ?: ScannerConfig()
val opm = getOperationManager()
for (eachClazz in targetClasses)
opm.addClazz(eachClazz)
logger.info("start scanning with cfg: $finalCfg")
CustomScanner(finalCfg).scanAll(opm)

logger.info(ret.toJson())
return ret
}
}

0 comments on commit 88d652f

Please sign in to comment.