Provide average() method for iterables, sequences and arrays.
#KT-3843 Fixed
This commit is contained in:
@@ -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") }
|
||||
|
||||
@@ -438,6 +438,16 @@ class CollectionTest {
|
||||
expect(3.0.toFloat()) { sequenceOf<Float>(1.0.toFloat(), 2.0.toFloat()).sum() }
|
||||
}
|
||||
|
||||
test fun average() {
|
||||
expect(0.0) { arrayListOf<Int>().average() }
|
||||
expect(3.8) { listOf(1, 2, 5, 8, 3).average() }
|
||||
expect(2.1) { sequenceOf(1.6, 2.6, 3.6, 0.6).average() }
|
||||
expect(100.0) { arrayListOf<Byte>(100, 100, 100, 100, 100, 100).average() }
|
||||
val n = 100
|
||||
val range = 0..n
|
||||
expect(n.toDouble()/2) { range.average() }
|
||||
}
|
||||
|
||||
test fun takeReturnsFirstNElements() {
|
||||
expect(listOf(1, 2, 3, 4, 5)) { (1..10) take 5 }
|
||||
expect(listOf(1, 2, 3, 4, 5)) { (1..10).toList().take(5) }
|
||||
|
||||
Reference in New Issue
Block a user