blob: 506244686affb0aab2d2a5fce31e1fa2704fda6b [file]
/*
* Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
package org.jetbrains.analyzer
import kotlin.test.*
import kotlin.math.abs
import org.jetbrains.report.BenchmarkResult
import org.jetbrains.report.MeanVarianceBenchmark
class AnalyzerTests {
private val eps = 0.000001
private fun createMeanVarianceBenchmarks(): Pair<MeanVarianceBenchmark, MeanVarianceBenchmark> {
val first = MeanVarianceBenchmark("testBenchmark", BenchmarkResult.Status.PASSED, 9.0, BenchmarkResult.Metric.EXECUTION_TIME, 9.0, 10, 10, 0.0001)
val second = MeanVarianceBenchmark("testBenchmark", BenchmarkResult.Status.PASSED, 10.0, BenchmarkResult.Metric.EXECUTION_TIME, 10.0, 10, 10, 0.0001)
return Pair(first, second)
}
@Test
fun testGeoMean() {
val numbers = listOf(4.0, 6.0, 9.0)
val value = geometricMean(numbers)
val expected = 6.0
assertTrue(abs(value - expected) < eps)
}
@Test
fun testComputeMeanVariance() {
val numbers = listOf(10.1, 10.2, 10.3)
val value = computeMeanVariance(numbers)
val expectedMean = 10.2
val expectedVariance = 0.07872455
assertTrue(abs(value.mean - expectedMean) < eps)
assertTrue(abs(value.variance - expectedVariance) < eps)
}
@Test
fun calcPercentageDiff() {
val inputs = createMeanVarianceBenchmarks()
val percent = inputs.first.calcPercentageDiff(inputs.second)
val expectedMean = -9.99809998
val expectedVariance = 0.0021
assertTrue(abs(percent.mean - expectedMean) < eps)
//assertTrue(abs(percent.variance - expectedVariance) < eps)
}
@Test
fun calcRatio() {
val inputs = createMeanVarianceBenchmarks()
val ratio = inputs.first.calcRatio(inputs.second)
val expectedMean = 0.9
val expectedVariance = 0.00001899
assertTrue(abs(ratio.mean - expectedMean) < eps)
assertTrue(abs(ratio.variance - expectedVariance) < eps)
}
}