mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-12-25 04:17:59 +01:00
Test Path and Paths classes
This commit is contained in:
parent
169f680b58
commit
e2dd0236ee
2 changed files with 165 additions and 0 deletions
|
@ -0,0 +1,103 @@
|
|||
package org.pgpainless.wot.dijkstra
|
||||
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
import org.pgpainless.wot.dijkstra.sq.*
|
||||
import java.util.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class PathTest {
|
||||
|
||||
private val root = CertSynopsis(
|
||||
Fingerprint("aabbccddeeAABBCCDDEEaabbccddeeAABBCCDDEE"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val alice = CertSynopsis(
|
||||
Fingerprint("0000000000000000000000000000000000000000"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val bob = CertSynopsis(
|
||||
Fingerprint("1111111111111111111111111111111111111111"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
|
||||
// Root -(255, 255)-> Alice
|
||||
private val root_alice__fully_trusted = Certification(root, alice, 255, Depth.unconstrained())
|
||||
// Root -(60,0)-> Alice
|
||||
private val root_alice__marginally_trusted = Certification(root, alice, 60, Depth.limited(0))
|
||||
// Alice -(255,255)-> Root
|
||||
private val alice_root = Certification(alice, root, 255, Depth.unconstrained())
|
||||
// Alice -(120, 1)-> Bob
|
||||
private val alice_bob = Certification(alice, null, bob, Date())
|
||||
// Root -> Root
|
||||
private val root_root = Certification(root, root, 120, Depth.limited(1))
|
||||
|
||||
@Test
|
||||
fun emptyPathTest() {
|
||||
val empty = Path(root)
|
||||
assertEquals(root, empty.target)
|
||||
assertEquals(listOf(root), empty.certificates)
|
||||
assertEquals(1, empty.length)
|
||||
assertEquals(120, empty.amount)
|
||||
assertTrue { empty.certifications.isEmpty() }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun appendTest() {
|
||||
val path = Path(root)
|
||||
assertEquals(listOf(root), path.certificates)
|
||||
|
||||
assertThrows<IllegalArgumentException> { path.append(alice_bob) }
|
||||
assertEquals(listOf(root), path.certificates)
|
||||
assertEquals(1, path.length)
|
||||
|
||||
path.append(root_alice__fully_trusted)
|
||||
assertEquals(listOf(root_alice__fully_trusted), path.certifications)
|
||||
assertEquals(listOf(root, alice), path.certificates)
|
||||
assertEquals(alice, path.target)
|
||||
assertEquals(2, path.length)
|
||||
assertEquals(255, path.amount)
|
||||
|
||||
path.append(alice_bob)
|
||||
assertEquals(listOf(root_alice__fully_trusted, alice_bob), path.certifications)
|
||||
assertEquals(listOf(root, alice, bob), path.certificates)
|
||||
assertEquals(bob, path.target)
|
||||
assertEquals(3, path.length)
|
||||
assertEquals(120, path.amount)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun appendTest2() {
|
||||
val path = Path(root)
|
||||
path.append(root_alice__marginally_trusted)
|
||||
assertEquals(60, path.amount)
|
||||
|
||||
assertThrows<IllegalArgumentException> {
|
||||
path.append(alice_bob)
|
||||
// not enough depth
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun appendTest3() {
|
||||
val path = Path(root)
|
||||
path.append(root_alice__fully_trusted)
|
||||
assertThrows<IllegalArgumentException> {
|
||||
path.append(alice_root)
|
||||
// cyclic path
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun appendTest4() {
|
||||
val path = Path(root)
|
||||
assertThrows<IllegalArgumentException> { path.append(root_root) }
|
||||
}
|
||||
|
||||
fun Certification(issuer: CertSynopsis, target: CertSynopsis, amount: Int, depth: Depth): Certification =
|
||||
Certification(issuer, target, null, Date(), null, true, amount, depth, RegexSet.wildcard())
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
package org.pgpainless.wot.dijkstra
|
||||
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
import org.pgpainless.wot.dijkstra.sq.*
|
||||
import java.util.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class PathsTest {
|
||||
|
||||
private val alice = CertSynopsis(
|
||||
Fingerprint("0000000000000000000000000000000000000000"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val bob = CertSynopsis(
|
||||
Fingerprint("1111111111111111111111111111111111111111"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
|
||||
private val alice_bob_1 = Certification(alice, bob, 140, Depth.unconstrained())
|
||||
private val alice_bob_2 = Certification(alice, bob, 160, Depth.limited(1))
|
||||
|
||||
@Test
|
||||
fun emptyPathsTest() {
|
||||
val empty = Paths()
|
||||
assertEquals(0, empty.amount)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun singlePathTest() {
|
||||
val path = Path(alice).apply { append(alice_bob_1) }
|
||||
val single = Paths().apply { add(path, 140) }
|
||||
|
||||
assertEquals(140, single.amount)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun twoPathsTest() {
|
||||
val path1 = Path(alice).apply { append(alice_bob_1) }
|
||||
val path2 = Path(alice).apply { append(alice_bob_2) }
|
||||
val twoPaths = Paths().apply {
|
||||
add(path1, 140)
|
||||
add(path2, 160)
|
||||
}
|
||||
|
||||
assertEquals(300, twoPaths.amount)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun notEnoughAmountTest() {
|
||||
val path = Path(alice).apply { append(alice_bob_1) }
|
||||
val paths = Paths()
|
||||
assertThrows<IllegalArgumentException> {
|
||||
paths.add(path, 250)
|
||||
}
|
||||
}
|
||||
|
||||
fun Certification(issuer: CertSynopsis, target: CertSynopsis, amount: Int, depth: Depth): Certification =
|
||||
Certification(issuer, target, null, Date(), null, true, amount, depth, RegexSet.wildcard())
|
||||
}
|
Loading…
Reference in a new issue