Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Commit

Permalink
Merge pull request #687 from corona-warn-app/dev
Browse files Browse the repository at this point in the history
1.0.4
  • Loading branch information
jakobmoellerdev authored Jun 20, 2020
2 parents c2e5bd4 + 4906bd3 commit ddb1f94
Show file tree
Hide file tree
Showing 3 changed files with 129 additions and 5 deletions.
4 changes: 2 additions & 2 deletions Corona-Warn-App/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ android {
applicationId 'de.rki.coronawarnapp'
minSdkVersion 23
targetSdkVersion 29
versionCode 30
versionName "1.0.3"
versionCode 31
versionName "1.0.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

buildConfigField "String", "DOWNLOAD_CDN_URL", "\"$DOWNLOAD_CDN_URL\""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ object ProtoFormatConverterExtensions {
private const val MAXIMUM_KEYS = 14

fun List<TemporaryExposureKey>.limitKeyCount() =
this.sortedWith(compareBy { it.rollingStartIntervalNumber }).asReversed().take(MAXIMUM_KEYS)
this.sortedWith(compareByDescending { it.rollingStartIntervalNumber }).take(MAXIMUM_KEYS)

fun List<TemporaryExposureKey>.transformKeyHistoryToExternalFormat() =
this.sortedWith(compareBy { it.rollingStartIntervalNumber })
this.sortedWith(compareByDescending { it.rollingStartIntervalNumber })
.mapIndexed { index, it ->
// The earliest key we receive is from yesterday (i.e. 1 day ago),
// The latest key we receive is from yesterday (i.e. 1 day ago),
// thus we need use index+1
val riskValue =
if (index + 1 <= DEFAULT_TRANSMISSION_RISK_VECTOR.lastIndex)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package de.rki.coronawarnapp.util

import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
import de.rki.coronawarnapp.util.ProtoFormatConverterExtensions.transformKeyHistoryToExternalFormat
import org.hamcrest.CoreMatchers
import org.hamcrest.MatcherAssert
import org.junit.Test

private const val DEFAULT_TRANSMISSION_RISK_LEVEL = 1
private const val TRANSMISSION_RISK_DAY_0 = 5
private const val TRANSMISSION_RISK_DAY_1 = 6
private const val TRANSMISSION_RISK_DAY_2 = 8
private const val TRANSMISSION_RISK_DAY_3 = 8
private const val TRANSMISSION_RISK_DAY_4 = 8
private const val TRANSMISSION_RISK_DAY_5 = 5
private const val TRANSMISSION_RISK_DAY_6 = 3
private const val TRANSMISSION_RISK_DAY_7 = 1

class ProtoFormatConverterExtensionsTest {

@Test
fun areTransmissionRiskLevelsCorrectlyAssigned() {

val key1 = byteArrayOf(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
)

val diagnosisKeyList = mutableListOf<TemporaryExposureKey>()
val numKeys = 13
for (pos in 0 until numKeys) {
diagnosisKeyList.add(
TemporaryExposureKey.TemporaryExposureKeyBuilder()
.setKeyData(key1)
.setRollingStartIntervalNumber(pos * 144)
.setRollingPeriod(144)
.setTransmissionRiskLevel(0)
.build()
)
}

val transformedKeyList = diagnosisKeyList.transformKeyHistoryToExternalFormat()
.sortedWith(compareBy { it.rollingStartIntervalNumber })

MatcherAssert.assertThat(
transformedKeyList.size,
CoreMatchers.equalTo(numKeys)
)

val correctRiskLevels = arrayOf(
DEFAULT_TRANSMISSION_RISK_LEVEL,
DEFAULT_TRANSMISSION_RISK_LEVEL,
DEFAULT_TRANSMISSION_RISK_LEVEL,
DEFAULT_TRANSMISSION_RISK_LEVEL,
DEFAULT_TRANSMISSION_RISK_LEVEL,
DEFAULT_TRANSMISSION_RISK_LEVEL,
TRANSMISSION_RISK_DAY_7,
TRANSMISSION_RISK_DAY_6,
TRANSMISSION_RISK_DAY_5,
TRANSMISSION_RISK_DAY_4,
TRANSMISSION_RISK_DAY_3,
TRANSMISSION_RISK_DAY_2,
TRANSMISSION_RISK_DAY_1
)

for (pos in 0 until numKeys) {
val key = transformedKeyList[pos]
MatcherAssert.assertThat(
key.transmissionRiskLevel,
CoreMatchers.equalTo(correctRiskLevels[pos])
)
MatcherAssert.assertThat(
key.rollingStartIntervalNumber,
CoreMatchers.equalTo(pos * 144)
)
}
}

@Test
fun areTransmissionRiskLevelsCorrectlyAssignedWithOnlyOneKey() {

val key1 = byteArrayOf(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
)

val diagnosisKeyList = mutableListOf<TemporaryExposureKey>()
val numKeys = 1
for (pos in 0 until numKeys) {
diagnosisKeyList.add(
TemporaryExposureKey.TemporaryExposureKeyBuilder()
.setKeyData(key1)
.setRollingStartIntervalNumber(pos * 144)
.setRollingPeriod(144)
.setTransmissionRiskLevel(0)
.build()
)
}

val transformedKeyList = diagnosisKeyList.transformKeyHistoryToExternalFormat()
.sortedWith(compareBy { it.rollingStartIntervalNumber })

MatcherAssert.assertThat(
transformedKeyList.size,
CoreMatchers.equalTo(numKeys)
)

val correctRiskLevels = arrayOf(
TRANSMISSION_RISK_DAY_1
)

for (pos in 0 until numKeys) {
val key = transformedKeyList[pos]
MatcherAssert.assertThat(
key.transmissionRiskLevel,
CoreMatchers.equalTo(correctRiskLevels[pos])
)
MatcherAssert.assertThat(
key.rollingStartIntervalNumber,
CoreMatchers.equalTo(pos * 144)
)
}
}
}

0 comments on commit ddb1f94

Please sign in to comment.