1 /* 2 * Copyright 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.benchmark 18 19 import androidx.test.ext.junit.runners.AndroidJUnit4 20 import androidx.test.filters.SmallTest 21 import kotlin.test.assertFailsWith 22 import org.junit.Assert.assertEquals 23 import org.junit.Test 24 import org.junit.runner.RunWith 25 26 @SmallTest 27 @RunWith(AndroidJUnit4::class) 28 class MetricResultTest { 29 @Test constructorThrowsIfEmptynull30 fun constructorThrowsIfEmpty() { 31 val exception = 32 assertFailsWith<IllegalArgumentException> { MetricResult("test", emptyList()) } 33 34 assertEquals("At least one result is necessary, 0 found for test.", exception.message!!) 35 } 36 37 @Test zerosnull38 fun zeros() { 39 val metricResult = MetricResult("test", listOf(0.0, 0.0)) 40 assertEquals(0.0, metricResult.min, 0.0) 41 assertEquals(0.0, metricResult.max, 0.0) 42 assertEquals(0.0, metricResult.median, 0.0) 43 assertEquals(0.0, metricResult.standardDeviation, 0.0) 44 assertEquals(0.0, metricResult.coefficientOfVariation, 0.0) 45 46 assertEquals(0, metricResult.minIndex) 47 assertEquals(0, metricResult.maxIndex) 48 assertEquals(1, metricResult.medianIndex) 49 } 50 51 @Test repeatnull52 fun repeat() { 53 val metricResult = MetricResult("test", listOf(10.0, 10.0, 10.0, 10.0)) 54 assertEquals(10.0, metricResult.min, 0.0) 55 assertEquals(10.0, metricResult.max, 0.0) 56 assertEquals(10.0, metricResult.median, 0.0) 57 assertEquals(0.0, metricResult.standardDeviation, 0.0) 58 assertEquals(0.0, metricResult.coefficientOfVariation, 0.0) 59 60 assertEquals(0, metricResult.minIndex) 61 assertEquals(0, metricResult.maxIndex) 62 assertEquals(2, metricResult.medianIndex) 63 } 64 65 @Test onenull66 fun one() { 67 val metricResult = MetricResult("test", listOf(10.0)) 68 assertEquals(10.0, metricResult.min, 0.0) 69 assertEquals(10.0, metricResult.max, 0.0) 70 assertEquals(10.0, metricResult.median, 0.0) 71 assertEquals(0.0, metricResult.standardDeviation, 0.0) 72 assertEquals(0.0, metricResult.coefficientOfVariation, 0.0) 73 74 assertEquals(0, metricResult.minIndex) 75 assertEquals(0, metricResult.maxIndex) 76 assertEquals(0, metricResult.medianIndex) 77 } 78 79 @Test simplenull80 fun simple() { 81 val metricResult = MetricResult("test", (0..100).map { it.toDouble() }) 82 assertEquals(50.0, metricResult.median, 0.0) 83 assertEquals(100.0, metricResult.max, 0.0) 84 assertEquals(0.0, metricResult.min, 0.0) 85 assertEquals(29.3, metricResult.standardDeviation, 0.05) 86 assertEquals(0.586, metricResult.coefficientOfVariation, 0.0005) 87 88 assertEquals(0, metricResult.minIndex) 89 assertEquals(100, metricResult.maxIndex) 90 assertEquals(50, metricResult.medianIndex) 91 } 92 93 @Test lerpnull94 fun lerp() { 95 assertEquals(MetricResult.lerp(0.0, 1000.0, 0.5), 500.0, 0.0) 96 assertEquals(MetricResult.lerp(0.0, 1000.0, 0.75), 750.0, 0.0) 97 assertEquals(MetricResult.lerp(0.0, 1000.0, 0.25), 250.0, 0.0) 98 assertEquals(MetricResult.lerp(500.0, 1000.0, 0.25), 625.0, 0.0) 99 } 100 101 @Test getPercentilenull102 fun getPercentile() { 103 (0..100).forEach { 104 assertEquals( 105 it.toDouble(), 106 MetricResult.getPercentile(listOf(0.0, 25.0, 50.0, 75.0, 100.0), it), 107 0.01 108 ) 109 } 110 } 111 } 112