Test for LibraryInfo dependencies

This commit is contained in:
Pavel V. Talanov
2014-09-29 16:31:14 +04:00
parent 23a45ae689
commit e25cbcd961
2 changed files with 58 additions and 5 deletions
@@ -156,7 +156,7 @@ private data class LibrarySourceInfo(val project: Project, val library: Library)
}
//TODO: (module refactoring) there should be separate SdkSourceInfo but there are no kotlin source in existing sdks for now :)
private data class SdkInfo(val project: Project, val sdk: Sdk) : IdeaModuleInfo() {
public data class SdkInfo(val project: Project, val sdk: Sdk) : IdeaModuleInfo() {
override val name: Name = Name.special("<library ${sdk.getName()}>")
override fun contentScope() = SdkScope(project, sdk)
@@ -220,6 +220,53 @@ class IdeaModuleInfoTest : ModuleTestCase() {
f.production.assertDependentsEqual(f.production, f.test)
}
fun testLibraryDependency1() {
val lib1 = projectLibrary("lib1")
val lib2 = projectLibrary("lib2")
val module = module("module")
module.addDependency(lib1)
module.addDependency(lib2)
lib1.classes.assertAdditionalLibraryDependencies(lib2.classes)
lib2.classes.assertAdditionalLibraryDependencies(lib1.classes)
}
fun testLibraryDependency2() {
val lib1 = projectLibrary("lib1")
val lib2 = projectLibrary("lib2")
val lib3 = projectLibrary("lib3")
val (a, b, c) = modules()
a.addDependency(lib1)
b.addDependency(lib2)
c.addDependency(lib3)
c.addDependency(a)
c.addDependency(b)
lib1.classes.assertAdditionalLibraryDependencies()
lib2.classes.assertAdditionalLibraryDependencies()
lib3.classes.assertAdditionalLibraryDependencies(lib1.classes, lib2.classes)
}
fun testLibraryDependency3() {
val lib1 = projectLibrary("lib1")
val lib2 = projectLibrary("lib2")
val lib3 = projectLibrary("lib3")
val (a, b) = modules()
a.addDependency(lib1)
b.addDependency(lib2)
a.addDependency(lib3)
b.addDependency(lib3)
lib1.classes.assertAdditionalLibraryDependencies(lib3.classes)
lib2.classes.assertAdditionalLibraryDependencies(lib3.classes)
lib3.classes.assertAdditionalLibraryDependencies(lib1.classes, lib2.classes)
}
private fun Module.addDependency(
other: Module,
dependencyScope: DependencyScope = DependencyScope.COMPILE,
@@ -247,12 +294,18 @@ class IdeaModuleInfoTest : ModuleTestCase() {
private fun modules(name1: String = "a", name2: String = "b", name3: String = "c") = Triple(module(name1), module(name2), module(name3))
private fun IdeaModuleInfo.assertDependenciesEqual(vararg dependencies: IdeaModuleInfo) {
Assert.assertEquals(dependencies.toList(), this.dependencies())
private fun IdeaModuleInfo.assertDependenciesEqual(vararg expected: IdeaModuleInfo) {
Assert.assertEquals(expected.toList(), this.dependencies())
}
private fun ModuleSourceInfo.assertDependentsEqual(vararg dependents: ModuleSourceInfo) {
UsefulTestCase.assertSameElements(this.getDependentModules(), dependents.toList())
private fun LibraryInfo.assertAdditionalLibraryDependencies(vararg expected: IdeaModuleInfo) {
Assert.assertEquals(this, dependencies().first())
val dependenciesWithoutSelf = this.dependencies().tail
UsefulTestCase.assertSameElements(dependenciesWithoutSelf, expected.toList())
}
private fun ModuleSourceInfo.assertDependentsEqual(vararg expected: ModuleSourceInfo) {
UsefulTestCase.assertSameElements(this.getDependentModules(), expected.toList())
}
private fun projectLibrary(name: String = "lib"): Library {