package com.flightfeather.uav.biz.dataanalysis
|
|
import com.flightfeather.uav.biz.FactorFilter
|
import com.flightfeather.uav.biz.dataanalysis.model.ExceptionTag
|
import com.flightfeather.uav.biz.dataanalysis.model.ExceptionType
|
import com.flightfeather.uav.biz.sourcetrace.config.RTExcWindLevelConfig
|
import com.flightfeather.uav.biz.sourcetrace.exceptiontype.*
|
import com.flightfeather.uav.biz.sourcetrace.model.PollutedClue
|
import com.flightfeather.uav.biz.sourcetrace.model.RemainException
|
import com.flightfeather.uav.domain.entity.BaseRealTimeData
|
import com.flightfeather.uav.socket.eunm.FactorType
|
import org.junit.Test
|
import kotlin.test.assertContentEquals
|
|
|
class BaseExceptionContinuousTest {
|
|
private val exceptionTag = ExceptionTag().apply {
|
sIndex = 1
|
startData = BaseRealTimeData().apply { id = 1 }
|
eIndex = 5
|
endData = BaseRealTimeData().apply { id = 4 }
|
exceptionData = mutableListOf(
|
startData!!,
|
BaseRealTimeData().apply { id = 2 },
|
BaseRealTimeData().apply { id = 3 },
|
endData!!
|
)
|
// historyData = mutableListOf()
|
exceptionExisted = true
|
exceptionCreated = false
|
// exceptionResult =
|
}
|
|
private val combination = listOf(
|
listOf(FactorType.PM25, FactorType.PM10),
|
listOf(FactorType.VOC, FactorType.CO),
|
listOf(FactorType.VOC, FactorType.PM25),
|
listOf(FactorType.VOC, FactorType.PM25, FactorType.CO),
|
)
|
|
private val config = RTExcWindLevelConfig(
|
FactorFilter.builder()
|
.withMain(FactorType.NO2)
|
.withMain(FactorType.CO)
|
// .withMain(FactorType.H2S)
|
// .withMain(FactorType.SO2)
|
.withMain(FactorType.O3)
|
.withMain(FactorType.PM25)
|
.withMain(FactorType.PM10)
|
.withMain(FactorType.VOC)
|
.withCombination(combination)
|
.create()
|
).apply { isSearchAddress = false }
|
|
private fun taskList() = mutableListOf(
|
RTExcWindLevel1(config).also { it.init() },
|
// RTExcWindLevel1_1(config).also { it.init() },
|
// RTExcWindLevel4(config).also { it.init() },
|
// RTExcWindLevel6(config).also { it.init() },
|
RTExcChangeRate1(config).also { it.init() },
|
// RTExcChangeRate4(config).also { it.init() },
|
// RTExcChangeRate6(config).also { it.init() },
|
// RTWarnChangeRate(config).also { it.init() },
|
// RTWarnChangeRate2(config).also { it.init() }
|
)
|
|
// 最新的一组异常,记录单因子异常
|
private fun exceptions() = mutableListOf(
|
FactorFilter.SelectedFactor(FactorType.NO2) to exceptionTag.clone(),
|
FactorFilter.SelectedFactor(FactorType.CO) to exceptionTag.clone(),
|
FactorFilter.SelectedFactor(FactorType.O3) to exceptionTag.clone(),
|
FactorFilter.SelectedFactor(FactorType.PM25) to exceptionTag.clone(),
|
FactorFilter.SelectedFactor(FactorType.PM10) to exceptionTag.clone(),
|
FactorFilter.SelectedFactor(FactorType.VOC) to exceptionTag.clone(),
|
)
|
|
@Test
|
fun removeSingleFactor() {
|
taskList().forEach { exc ->
|
exc.latestExceptions.clear()
|
exc.latestExceptions.addAll(exceptions())
|
|
exc.removeSingleFactor(BaseRealTimeData())
|
|
val resList = exc.result.map {
|
it.pollutedData?.statisticMap?.entries?.map { e -> e.key }
|
}
|
assertContentEquals(
|
listOf(listOf(FactorType.NO2), listOf(FactorType.O3)),
|
resList,
|
"异常结果应该都是不在组合中的异常"
|
)
|
|
val resList2 = exc.latestExceptions.map { it.first.main }
|
assertContentEquals(
|
listOf(FactorType.CO, FactorType.PM25, FactorType.PM10, FactorType.VOC),
|
resList2,
|
"剩余的应该是不在组合中的异常"
|
)
|
}
|
}
|
|
@Test
|
fun checkDelayedExceptions() {
|
val res = listOf(FactorFilter.SelectedFactor(FactorType.PM25) to exceptionTag)
|
val c = listOf(FactorType.PM25, FactorType.PM10, FactorType.VOC)
|
val r = RemainException(res, c)
|
println(r)
|
// taskList().forEach { exc ->
|
// val e = exceptions()
|
// exc.remainingExceptions.add(RemainException(listOf(e[3], e[5]), listOf(FactorType.VOC, FactorType.PM25, FactorType.CO)))
|
// exc.remainingExceptions.add(RemainException(listOf(e[1]), listOf(FactorType.VOC, FactorType.CO)))
|
// exc.remainingExceptions.add(RemainException(listOf(e[3]), listOf(FactorType.PM10, FactorType.PM25)))
|
//
|
// exc.latestExceptions.clear()
|
// exc.latestExceptions.addAll(exceptions())
|
//
|
// exc.removeSingleFactor(BaseRealTimeData())
|
//
|
// val resList = exc.result.map {
|
// it.pollutedData?.statisticMap?.entries?.map { e -> e.key }
|
// }
|
// assertContentEquals(
|
// listOf(listOf(FactorType.NO2), listOf(FactorType.O3)),
|
// resList,
|
// "异常结果应该都是不在组合中的异常"
|
// )
|
//
|
// val resList2 = exc.latestExceptions.map { it.first.main }
|
// assertContentEquals(
|
// listOf(FactorType.CO, FactorType.PM25, FactorType.PM10, FactorType.VOC),
|
// resList2,
|
// "剩余的应该是不在组合中的异常"
|
// )
|
// }
|
|
}
|
|
@Test
|
fun mergeExceptionResult() {
|
val factorList = listOf(
|
FactorFilter.SelectedFactor(FactorType.PM10),
|
FactorFilter.SelectedFactor(FactorType.PM25),
|
FactorFilter.SelectedFactor(FactorType.CO),
|
)
|
val factorList2 = listOf(
|
FactorFilter.SelectedFactor(FactorType.PM25),
|
FactorFilter.SelectedFactor(FactorType.PM10),
|
)
|
|
val factorList3 = listOf(
|
FactorFilter.SelectedFactor(FactorType.PM25),
|
FactorFilter.SelectedFactor(FactorType.VOC),
|
)
|
|
val comb = listOf(
|
listOf(
|
FactorFilter.SelectedFactor(FactorType.PM10),
|
FactorFilter.SelectedFactor(FactorType.PM25),
|
FactorFilter.SelectedFactor(FactorType.CO),
|
),
|
listOf(
|
FactorFilter.SelectedFactor(FactorType.PM25),
|
FactorFilter.SelectedFactor(FactorType.PM10),
|
),
|
listOf(
|
FactorFilter.SelectedFactor(FactorType.VOC),
|
FactorFilter.SelectedFactor(FactorType.PM25),
|
)
|
)
|
|
val i = comb.indexOf(factorList)
|
println(i)
|
}
|
|
@Test
|
fun clearExceptions() {
|
|
}
|
|
|
}
|