Open-source multiplayer game server compatible with the RuneScape client https://www.openrs2.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
openrs2/util/src/test/kotlin/org/openrs2/util/io/DeterministicJarOutputStrea...

66 lines
2.1 KiB

package org.openrs2.util.io
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.nio.file.attribute.FileTime
import java.util.jar.Attributes
import java.util.jar.JarEntry
import java.util.jar.JarInputStream
import java.util.jar.Manifest
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertNull
class DeterministicJarOutputStreamTest {
private val manifest = Manifest().apply {
mainAttributes[Attributes.Name.MANIFEST_VERSION] = "1.0"
mainAttributes[Attributes.Name.MAIN_CLASS] = "Hello"
}
@Test
fun testPutNextEntry() {
ByteArrayOutputStream().use { out ->
DeterministicJarOutputStream(out).use { jar ->
val entry = JarEntry("Hello.class")
entry.creationTime = Y2K
entry.lastAccessTime = Y2K
entry.lastModifiedTime = Y2K
jar.putNextEntry(entry)
}
JarInputStream(ByteArrayInputStream(out.toByteArray())).use { jar ->
assertNull(jar.manifest)
val entry = jar.nextJarEntry
assertNotNull(entry)
assertEquals("Hello.class", entry.name)
assertEquals(0, entry.time)
assertEquals(UNIX_EPOCH, entry.creationTime)
assertEquals(UNIX_EPOCH, entry.lastAccessTime)
assertEquals(UNIX_EPOCH, entry.lastModifiedTime)
assertNull(jar.nextJarEntry)
}
}
}
@Test
fun testManifest() {
ByteArrayOutputStream().use { out ->
DeterministicJarOutputStream(out, manifest).use { jar ->
jar.putNextEntry(JarEntry("Hello.class"))
}
JarInputStream(ByteArrayInputStream(out.toByteArray())).use { jar ->
assertEquals(manifest, jar.manifest)
}
}
}
private companion object {
private val UNIX_EPOCH = FileTime.fromMillis(0)
private val Y2K = FileTime.fromMillis(946684800)
}
}