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) } }