Provide average() method for iterables, sequences and arrays.

#KT-3843 Fixed
This commit is contained in:
Ilya Gorbunov
2015-04-16 16:12:05 +03:00
parent f402ae8540
commit 5dacb5a745
4 changed files with 495 additions and 0 deletions
@@ -160,6 +160,17 @@ class ArraysTest {
expect(3.0.toFloat()) { arrayOf<Float>(1.0.toFloat(), 2.0.toFloat()).sum() }
}
test fun average() {
expect(0.0) { array<Int>().average() }
expect(3.8) { array(1, 2, 5, 8, 3).average() }
expect(2.1) { array(1.6, 2.6, 3.6, 0.6).average() }
expect(100.0) { array<Byte>(100, 100, 100, 100, 100, 100).average() }
expect(0) { array<Short>(1, -1, 2, -2, 3, -3).average().toShort() }
// TODO: Property based tests
// for each arr with size 1 arr.average() == arr[0]
// for each arr with size > 0 arr.average() = arr.sum().toDouble() / arr.size()
}
test fun indexOf() {
expect(-1) { arrayOf("cat", "dog", "bird").indexOf("mouse") }
expect(0) { arrayOf("cat", "dog", "bird").indexOf("cat") }