1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package org.meshbay.client
import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import org.meshbay.client.save.BinaryFrame
import org.meshbay.client.save.SaveNames
class SaveNamesTest {
@Test fun `a suggested name is a basename with no bidirectional tricks`() {
assertEquals("invoice_fdp.exe", SaveNames.sanitize("invoice\u202efdp.exe"))
assertEquals("passwd", SaveNames.sanitize("../../etc/passwd"))
assertEquals("x.txt", SaveNames.sanitize("C:\\Users\\x.txt"))
assertEquals("download", SaveNames.sanitize(""))
assertEquals("download", SaveNames.sanitize(".."))
assertEquals("a_b", SaveNames.sanitize("a\u0000b"))
}
@Test fun `only what runs nothing is opened, under a type from the name`() {
assertEquals("application/pdf", SaveNames.openableType("Report.PDF"))
assertEquals("video/mp4", SaveNames.openableType("clip.mp4"))
for (n in listOf("page.html", "image.svg", "run.apk", "script.js", "noext", "x.pdf.exe")) {
assertNull(n, SaveNames.openableType(n))
}
assertEquals("application/octet-stream", SaveNames.storedType("page.html"))
}
@Test fun `a taken name becomes name (n), never an overwrite`() {
assertEquals("film (2).mkv", SaveNames.numbered("film.mkv", 2))
assertEquals("README (3)", SaveNames.numbered("README", 3))
}
@Test fun `a binary frame is read as the shim writes it`() {
val payload = byteArrayOf(1, 2, 3, 4, 5)
val b = byteArrayOf(0x4d, 0x42, 0x42, 0x31, 0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 7) + payload
val f = BinaryFrame.parse(b)!!
assertEquals(258L, f.id)
assertEquals(BinaryFrame.SAVE_WRITE, f.channel)
assertEquals(7L, f.handle)
assertArrayEquals(payload, f.bytes.copyOfRange(f.offset, f.bytes.size))
assertNull(BinaryFrame.parse(byteArrayOf(0x4d, 0x42, 0x42, 0x32) + ByteArray(12)))
assertNull(BinaryFrame.parse(ByteArray(10)))
}
}
|