You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.2 KiB
Kotlin

package net.cijber.pubgrub.commonTest
import net.cijber.pubgrub.commonTest.impl.VersionImpl
import net.cijber.pubgrub.version.VersionBorder
import net.cijber.pubgrub.version.VersionRange
import net.cijber.pubgrub.version.VersionUnion
import kotlin.test.Asserter
import kotlin.test.DefaultAsserter
import kotlin.test.Test
class VersionConstraintTest : Asserter by DefaultAsserter {
@Test
fun difference() {
val a = VersionUnion(
listOf(
VersionRange(null, VersionBorder.top(VersionImpl(4))),
VersionRange(VersionBorder.bottom(VersionImpl(6)), null)
)
)
val b = VersionRange(
VersionBorder.top(VersionImpl(3)),
VersionBorder.top(VersionImpl(7))
)
val diff = a.difference(b)
assertTrue("diff is VersionUnion", diff is VersionUnion)
if (diff !is VersionUnion) {
error("")
}
val first = diff.constraints.first()
val last = diff.constraints.last()
assertEquals("First has no bottom", null, first.bottom)
assertEquals("First top at 3", VersionImpl(3), first.top?.version)
assertEquals("Last has no top", null, last.top)
assertEquals("Last bottom at 7", VersionImpl(7), last.bottom?.version)
}
@Test
fun intersection() {
val a = VersionUnion(
listOf(
VersionRange(null, VersionBorder.top(VersionImpl(4))),
VersionRange(VersionBorder.bottom(VersionImpl(6)), null)
)
)
val b = VersionRange(
VersionBorder.bottom(VersionImpl(3)),
VersionBorder.top(VersionImpl(7))
)
val diff = a.intersect(b)
assertTrue("diff is VersionUnion: $diff", diff is VersionUnion)
if (diff !is VersionUnion) {
error("")
}
val first = diff.constraints.first()
val last = diff.constraints.last()
assertEquals("First bottom at 3", VersionImpl(3), first.bottom?.version)
assertEquals("First top at 4", VersionImpl(4), first.top?.version)
assertEquals("Last bottom at 6", VersionImpl(6), last.bottom?.version)
assertEquals("Last top at 7", VersionImpl(7), last.top?.version)
}
}