/* * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ package model import org.jetbrains.dokka.DokkaSourceSetID import org.jetbrains.dokka.model.CompositeSourceSetID import kotlin.test.* class CompositeSourceSetIDTest { @Test fun `constructor fails with empty collection`() { assertFailsWith("Expected no construction of empty `CompositeSourceSetID`") { CompositeSourceSetID(emptyList()) } } @Test fun `merged for single source set`() { val sourceSetID = DokkaSourceSetID("module", "sourceSet") val composite = CompositeSourceSetID(sourceSetID) assertEquals( composite.merged, sourceSetID, "Expected merged source set id to be equal to single child" ) } @Test fun `merged with multiple source sets`() { val composite = CompositeSourceSetID( listOf(DokkaSourceSetID("m1", "s1"), DokkaSourceSetID("m2", "s2"), DokkaSourceSetID("m3", "s3")) ) assertEquals( DokkaSourceSetID("m1+m2+m3", "s1+s2+s3"), composite.merged, "Expected merged source set id to concatenate source sets" ) } @Test fun `contains with child sourceSetID`() { val composite = CompositeSourceSetID(listOf(DokkaSourceSetID("m1", "s1"), DokkaSourceSetID("m2", "s2"))) assertFalse( DokkaSourceSetID("m3", "s3") in composite, "Expected source set id not being contained in composite" ) assertTrue( DokkaSourceSetID("m1", "s1") in composite, "Expected child source set id being contained in composite" ) assertTrue( DokkaSourceSetID("m1+m2", "s1+s2") in composite, "Expected merged source set id being contained in composite" ) } @Test fun `plus operator`() { val composite = DokkaSourceSetID("m1", "s1") + DokkaSourceSetID("m2", "s2") + DokkaSourceSetID("m3", "s3") assertEquals( DokkaSourceSetID("m1+m2+m3", "s1+s2+s3"), composite.merged, "Expected all three source sets being merged in order" ) } operator fun DokkaSourceSetID.plus(other: DokkaSourceSetID): CompositeSourceSetID { return CompositeSourceSetID(listOf(this, other)) } }