mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-05 12:07:25 +00:00
Added unit tests for sat params parsing
This commit is contained in:
1 parent
9a4de03cac
commit
2c757a6b35
2 files changed
+58
-43
No files matched your search
@@ -48,41 +48,43 @@ data class TLE(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun parseArray(array: Array<String>): TLE? {
|
fun parseStream(stream: InputStream): List<TLE> {
|
||||||
if (array.size != 3) return null
|
val itemParams = mutableListOf(String(), String(), String())
|
||||||
|
val importedItems = mutableListOf<TLE>()
|
||||||
|
var lineIndex = 0
|
||||||
|
stream.bufferedReader().forEachLine { line ->
|
||||||
|
itemParams[lineIndex] = line
|
||||||
|
if (lineIndex < 2) {
|
||||||
|
lineIndex++
|
||||||
|
} else {
|
||||||
|
val isLineOneValid = itemParams[1].substring(0, 1) == "1"
|
||||||
|
val isLineTwoValid = itemParams[2].substring(0, 1) == "2"
|
||||||
|
if (!isLineOneValid && !isLineTwoValid) return@forEachLine
|
||||||
|
parseParams(itemParams)?.let { tle -> importedItems.add(tle) }
|
||||||
|
lineIndex = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return importedItems
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun parseParams(params: List<String>): TLE? {
|
||||||
|
if (params[1].substring(0, 1) != "1" && params[2].substring(0, 1) != "2") return null
|
||||||
try {
|
try {
|
||||||
val name: String = array[0].trim()
|
val name: String = params[0].trim()
|
||||||
val epoch: Double = array[1].substring(18, 32).toDouble()
|
val epoch: Double = params[1].substring(18, 32).toDouble()
|
||||||
val meanmo: Double = array[2].substring(52, 63).toDouble()
|
val meanmo: Double = params[2].substring(52, 63).toDouble()
|
||||||
val eccn: Double = 1.0e-07 * array[2].substring(26, 33).toDouble()
|
val eccn: Double = 1.0e-07 * params[2].substring(26, 33).toDouble()
|
||||||
val incl: Double = array[2].substring(8, 16).toDouble()
|
val incl: Double = params[2].substring(8, 16).toDouble()
|
||||||
val raan: Double = array[2].substring(17, 25).toDouble()
|
val raan: Double = params[2].substring(17, 25).toDouble()
|
||||||
val argper: Double = array[2].substring(34, 42).toDouble()
|
val argper: Double = params[2].substring(34, 42).toDouble()
|
||||||
val meanan: Double = array[2].substring(43, 51).toDouble()
|
val meanan: Double = params[2].substring(43, 51).toDouble()
|
||||||
val catnum: Int = array[1].substring(2, 7).trim().toInt()
|
val catnum: Int = params[1].substring(2, 7).trim().toInt()
|
||||||
val bstar: Double = 1.0e-5 * array[1].substring(53, 59).toDouble() /
|
val bstar: Double = 1.0e-5 * params[1].substring(53, 59).toDouble() /
|
||||||
10.0.pow(array[1].substring(60, 61).toDouble())
|
10.0.pow(params[1].substring(60, 61).toDouble())
|
||||||
return TLE(name, epoch, meanmo, eccn, incl, raan, argper, meanan, catnum, bstar)
|
return TLE(name, epoch, meanmo, eccn, incl, raan, argper, meanan, catnum, bstar)
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun parseStream(stream: InputStream): List<TLE> {
|
|
||||||
val elementArray = arrayOf(String(), String(), String())
|
|
||||||
val importedElements = mutableListOf<TLE>()
|
|
||||||
var line = 0
|
|
||||||
stream.bufferedReader().forEachLine {
|
|
||||||
if (line != 2) {
|
|
||||||
elementArray[line] = it
|
|
||||||
line++
|
|
||||||
} else {
|
|
||||||
elementArray[line] = it
|
|
||||||
parseArray(elementArray)?.let { tle -> importedElements.add(tle) }
|
|
||||||
line = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return importedElements
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,22 +5,35 @@ import org.junit.Test
|
|||||||
|
|
||||||
class Look4SatTest {
|
class Look4SatTest {
|
||||||
|
|
||||||
|
private val validParamsStream = """
|
||||||
|
ISS (ZARYA)
|
||||||
|
1 25544U 98067A 21255.21005818 -.00120443 00000-0 -22592-2 0 9998
|
||||||
|
2 25544 51.6451 272.4173 0002526 27.1693 64.4213 15.48396490302085
|
||||||
|
SHENZHOU-12
|
||||||
|
1 48852U 21053A 21254.65783594 .00009779 00000-0 11349-3 0 9992
|
||||||
|
2 48852 41.4714 115.4555 0001945 272.0324 187.3218 15.61782249 21227
|
||||||
|
PROGRESS-MS 17
|
||||||
|
1 48869U 21057A 21254.57379002 .00002620 00000-0 56399-4 0 9993
|
||||||
|
2 48869 51.6436 275.5624 0003404 23.4371 118.9508 15.48629868301984
|
||||||
|
""".trimIndent().byteInputStream()
|
||||||
|
private val invalidParamsStream = """
|
||||||
|
1 25544U 98067A 21255.21005818 -.00120443 00000-0 -22592-2 0 9998
|
||||||
|
2 25544 51.6451 272.4173 0002526 27.1693 64.4213 15.48396490302085
|
||||||
|
1 48852U 21053A 21254.65783594 .00009779 00000-0 11349-3 0 9992
|
||||||
|
2 48852 41.4714 115.4555 0001945 272.0324 187.3218 15.61782249 21227
|
||||||
|
1 48869U 21057A 21254.57379002 .00002620 00000-0 56399-4 0 9993
|
||||||
|
2 48869 51.6436 275.5624 0003404 23.4371 118.9508 15.48629868301984
|
||||||
|
""".trimIndent().byteInputStream()
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Given correct TLE array returns Satellite`() {
|
fun `Given valid params stream returns valid data`() {
|
||||||
val tleArray = arrayOf(
|
val parsedList = TLE.parseStream(validParamsStream)
|
||||||
"ISS (ZARYA)",
|
assert(parsedList[2].catnum == 48869)
|
||||||
"1 25544U 98067A 21242.56000419 .00070558 00000-0 12956-2 0 9996",
|
|
||||||
"2 25544 51.6433 334.9559 0003020 334.9496 106.9882 15.48593918300128"
|
|
||||||
)
|
|
||||||
assert(TLE.parseArray(tleArray)?.createSat() != null)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Given incorrect TLE array returns null`() {
|
fun `Given invalid params stream returns empty list`() {
|
||||||
val tleArray = arrayOf(
|
val parsedList = TLE.parseStream(invalidParamsStream)
|
||||||
"1 25544U 98067A 21242.56000419 .00070558 00000-0 12956-2 0 9996",
|
assert(parsedList.isEmpty())
|
||||||
"2 25544 51.6433 334.9559 0003020 334.9496 106.9882 15.48593918300128"
|
|
||||||
)
|
|
||||||
assert(TLE.parseArray(tleArray)?.createSat() == null)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user