newly written circulararray

This commit is contained in:
minjaesong
2019-07-14 03:55:27 +09:00
parent 5f3801eb48
commit f2ee058e7c
2 changed files with 167 additions and 48 deletions

View File

@@ -8,38 +8,58 @@ import net.torvald.util.CircularArray
class CircularArrayTest {
operator fun invoke() {
val testSet = CircularArray<Int?>(5)
val testSet2 = CircularArray<Int?>(5)
val testSet = CircularArray<Int?>(5, true)
val testSet2 = CircularArray<Int?>(5, true)
testSet2.overwritingPolicy = { println("Overwritten: $it") }
val testSet3 = CircularArray<Int?>(5, true)
for (i in 1..5) {
testSet.add(i)
testSet.appendHead(i)
}
println("Metadata:")
println(testSet)
println("forEach():")
testSet.forEach { print("$it ") }
testSet.forEach { print("$it ") } // 1 2 3 4 5
println("\nfold(0, sum):")
println(testSet.fold(0) { acc, v -> acc + (v ?: 0) })
println(testSet.fold(0) { acc, v -> acc + (v ?: 0) }) // 15
println("Raw:")
testSet.buffer.forEach { print("$it ") }
testSet.buffer.forEach { print("$it ") } // 1 2 3 4 5
println()
println()
for (i in 1..6) {
testSet2.add(i)
testSet2.appendHead(i) // must print "Overwritten: 1"
}
println("Metadata:")
println(testSet2)
println("forEach():")
println("forEach():") // 2 3 4 5 6
testSet2.forEach { print("$it ") }
println("\nfold(0, sum):")
println(testSet2.fold(0) { acc, v -> acc + (v ?: 0) })
println(testSet2.fold(0) { acc, v -> acc + (v ?: 0) }) // 20
println("Raw:")
testSet2.buffer.forEach { print("$it ") }
testSet2.buffer.forEach { print("$it ") } // 6 2 3 4 5
println()
println()
for (i in 1..5) {
testSet3.appendHead(i)
}
val a1 = testSet3.removeTail()
val a2 = testSet3.removeTail()
println("Removed elems: $a1 $a2")
println("Metadata:")
println(testSet3)
println("forEach():") // 3 4 5
testSet3.forEach { print("$it ") }
println("\nfold(0, sum):")
println(testSet3.fold(0) { acc, v -> acc + (v ?: 0) }) // 12
println("Raw:")
testSet3.buffer.forEach { print("$it ") } // 1 2 3 4 5
println()
}
}