6fc4c5a6cb597cfae0089d851191cce45210cbf9
[idea/community.git] / plugins / gradle / tooling-extension-impl / testSources / org / jetbrains / plugins / gradle / tooling / builder / ModelBuildScriptClasspathBuilderImplTest.java
1 /*
2  * Copyright 2000-2014 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.jetbrains.plugins.gradle.tooling.builder;
17
18 import com.intellij.util.Function;
19 import com.intellij.util.containers.ContainerUtil;
20 import org.gradle.tooling.model.DomainObjectSet;
21 import org.gradle.tooling.model.idea.IdeaModule;
22 import org.jetbrains.annotations.NotNull;
23 import org.jetbrains.plugins.gradle.model.BuildScriptClasspathModel;
24 import org.jetbrains.plugins.gradle.model.ClasspathEntryModel;
25 import org.junit.Test;
26
27 import java.io.File;
28 import java.util.List;
29 import java.util.Set;
30
31 import static org.junit.Assert.*;
32
33 /**
34  * @author Vladislav.Soroka
35  * @since 1/16/14
36  */
37 public class ModelBuildScriptClasspathBuilderImplTest extends AbstractModelBuilderTest {
38
39   public ModelBuildScriptClasspathBuilderImplTest(@NotNull String gradleVersion) {
40     super(gradleVersion);
41   }
42
43   @Test
44   public void testModelBuildScriptClasspathBuilder() throws Exception {
45
46     DomainObjectSet<? extends IdeaModule> ideaModules = allModels.getIdeaProject().getModules();
47
48     List<BuildScriptClasspathModel> ideaModule =
49       ContainerUtil.mapNotNull(ideaModules, new Function<IdeaModule, BuildScriptClasspathModel>() {
50         @Override
51         public BuildScriptClasspathModel fun(IdeaModule module) {
52           BuildScriptClasspathModel classpathModel = allModels.getExtraProject(module, BuildScriptClasspathModel.class);
53
54           if (module.getName().equals("moduleWithAdditionalClasspath")) {
55             assertNotNull(classpathModel);
56             assertEquals(1, classpathModel.getClasspath().size());
57
58             ClasspathEntryModel classpathEntry = classpathModel.getClasspath().getAt(0);
59             assertEquals("someDep.jar", new File(classpathEntry.getClasses().iterator().next()).getName());
60           }
61           else if (module.getName().equals("baseModule") ||
62                    module.getName().equals("moduleWithInheritedClasspath")) {
63             assertNotNull("Null build classpath for module: " + module.getName(), classpathModel);
64             assertEquals("Wrong build classpath for module: " + module.getName(), 1, classpathModel.getClasspath().size());
65
66             ClasspathEntryModel classpathEntry = classpathModel.getClasspath().getAt(0);
67             assertEquals("Wrong build classpath for module: " + module.getName(), "inheritedDep.jar",
68                          new File(classpathEntry.getClasses().iterator().next()).getName());
69           }
70           else if (module.getName().equals("moduleWithoutAdditionalClasspath") ||
71                    module.getName().equals("testModelBuildScriptClasspathBuilder")) {
72             assertNotNull("Wrong build classpath for module: " + module.getName(), classpathModel);
73             assertTrue("Wrong build classpath for module: " + module.getName(), classpathModel.getClasspath().isEmpty());
74           }
75           else {
76             fail("Unexpected module found: " + module.getName());
77           }
78
79           return classpathModel;
80         }
81       });
82
83     assertEquals(5, ideaModule.size());
84   }
85
86   @Override
87   protected Set<Class> getModels() {
88     return ContainerUtil.<Class>set(BuildScriptClasspathModel.class);
89   }
90 }