diff --git a/core/data/src/main/java/com/rtbishop/look4sat/core/data/repository/LoTWRepository.kt b/core/data/src/main/java/com/rtbishop/look4sat/core/data/repository/LoTWRepository.kt index 36e210b1..d08a6dbe 100644 --- a/core/data/src/main/java/com/rtbishop/look4sat/core/data/repository/LoTWRepository.kt +++ b/core/data/src/main/java/com/rtbishop/look4sat/core/data/repository/LoTWRepository.kt @@ -194,8 +194,9 @@ class LoTWRepository : ILoTWRepository { line.startsWith(" bandDown = adifValue(line).uppercase() line.startsWith(" { - // VUCC_GRIDS holds a comma-separated PAIR of grids - // ("EN52en,EN53fa"); split and keep every 4-char field. + // VUCC_GRIDS holds a comma-separated list of grids + // ("EN52en,EN53fa"), up to four for contacts spanning + // several squares; split and keep every 4-char field. adifValue(line).split(',').forEach { grid -> val field = grid.trim().uppercase() if (field.length >= 4) gridsInRecord.add(field.take(4)) diff --git a/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/LoTWRepositoryTest.kt b/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/LoTWRepositoryTest.kt index ec351b07..67453d0e 100644 --- a/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/LoTWRepositoryTest.kt +++ b/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/LoTWRepositoryTest.kt @@ -111,6 +111,17 @@ class LoTWRepositoryTest { assertEquals(result["EN52"]!!.first(), result["EN53"]!!.first()) } + @Test + fun parseQsosVuccQuadrupleFeedsAllFourGrids() { + // VUCC allows up to four grids in one contact. + val qso = "SAT\nSO-50\n" + + "20260819\n1231\n" + + "EN52en,EN53fa,EN42gj,EN43kh\n\n" + val result = repo.parseConfirmedGridQsos(report(qso))!! + assertEquals(setOf("EN52", "EN53", "EN42", "EN43"), result.keys) + result.values.forEach { assertEquals(1, it.size) } + } + @Test fun parseQsosRejectsBodyWithoutEoh() { assertNull(repo.parseConfirmedGridQsos("Username/password incorrect"))