1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package com.dmdirc.ktirc.io
-
- import kotlinx.io.pool.useInstance
- import org.junit.jupiter.api.Assertions.*
- import org.junit.jupiter.api.Test
- import java.nio.ByteBuffer
-
- internal class ByteBufferPoolTest {
-
- @Test
- fun `it allows borrowing of multiple unique bytebuffers`() {
- val pool = ByteBufferPool(5, 10)
- val buffer1 = pool.borrow()
- val buffer2 = pool.borrow()
- val buffer3 = pool.borrow()
-
- assertFalse(buffer1 === buffer2)
- assertFalse(buffer2 === buffer3)
- assertFalse(buffer1 === buffer3)
- }
-
- @Test
- fun `it produces buffers of the correct size`() {
- val pool = ByteBufferPool(5, 12)
- val buffer = pool.borrow()
- assertEquals(12, buffer.limit())
- }
-
- @Test
- fun `it reuses recycled buffers`() {
- val pool = ByteBufferPool(1, 10)
-
- val buffer1 = pool.borrow()
- pool.recycle(buffer1)
-
- val buffer2 = pool.borrow()
- assertTrue(buffer1 === buffer2)
- }
-
- @Test
- fun `it resets buffers when reborrowing`() {
- val pool = ByteBufferPool(1, 10)
- val buffer1 = pool.borrow()
- buffer1.put("31137".toByteArray())
- pool.recycle(buffer1)
-
- val buffer2 = pool.borrow()
- assertTrue(buffer1 === buffer2)
- assertEquals(0, buffer2.position())
- assertEquals(10, buffer2.limit())
- }
-
- @Test
- fun `borrow with block automatically returns`() {
- val pool = ByteBufferPool(1, 10)
- var buffer1: ByteBuffer? = null
- pool.useInstance { buffer1 = it }
- val buffer2 = pool.borrow()
- assertTrue(buffer1 === buffer2)
- }
-
- }
|