blob: dc03c9ae39afb8b5eea6e719fb6ee7b78896a39b [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.tools.idea.rendering;
import com.android.ide.common.resources.ResourceResolver;
import com.android.tools.idea.configurations.Configuration;
import com.android.tools.idea.configurations.ConfigurationManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.xml.XmlFile;
import org.jetbrains.android.AndroidTestCase;
@SuppressWarnings("SpellCheckingInspection")
public class IncludeReferenceTest extends AndroidTestCase {
public void testBasic() {
VirtualFile file1 = myFixture.copyFileToProject("xmlpull/designtime.xml", "res/layout/designtime.xml");
assertNotNull(file1);
VirtualFile file2 = myFixture.copyFileToProject("xmlpull/visible_child.xml", "res/layout/visible_child.xml");
assertNotNull(file2);
VirtualFile file3 = myFixture.copyFileToProject("xmlpull/designtime.xml", "res/layout-land/designtime.xml");
assertNotNull(file1);
IncludeReference reference = IncludeReference.create(myModule, file1, file2);
assertEquals("designtime.xml", reference.getFromDisplayName());
assertEquals("designtime", reference.getFromResourceName());
assertEquals("@layout/designtime", reference.getFromResourceUrl());
assertEquals(file1, reference.getFromFile());
assertEquals(file2, reference.getToFile());
assertEquals(file1, LocalFileSystem.getInstance().findFileByIoFile(reference.getFromPath()));
//noinspection ConstantConditions
assertEquals(file2, LocalFileSystem.getInstance().findFileByIoFile(reference.getToPath()));
assertSame(myModule, reference.getModule());
reference = IncludeReference.create(myModule, file3, file2);
assertEquals("designtime", reference.getFromResourceName());
assertEquals("@layout/designtime", reference.getFromResourceUrl());
assertEquals("layout-land/designtime.xml", reference.getFromDisplayName());
}
public void testGetSet() {
VirtualFile included = myFixture.copyFileToProject("designer/included.xml", "res/layout/included.xml");
assertNotNull(included);
VirtualFile includer = myFixture.copyFileToProject("designer/included.xml", "res/layout/includer.xml");
assertNotNull(includer);
XmlFile psiFile = (XmlFile)PsiManager.getInstance(getProject()).findFile(included);
assertNotNull(psiFile);
assertEquals("@layout/includer", IncludeReference.getIncludingLayout(psiFile));
ConfigurationManager manager = myFacet.getConfigurationManager();
Configuration configuration = manager.getConfiguration(included);
ResourceResolver resourceResolver = configuration.getResourceResolver();
assertNotNull(resourceResolver);
IncludeReference reference = IncludeReference.get(myModule, psiFile, resourceResolver);
assertEquals("includer.xml", reference.getFromDisplayName());
assertEquals("includer", reference.getFromResourceName());
assertEquals("@layout/includer", reference.getFromResourceUrl());
assertEquals(reference.getFromFile(), includer);
assertEquals(reference.getToFile(), included);
IncludeReference.setIncludingLayout(getProject(), psiFile, null);
assertEquals(IncludeReference.NONE, IncludeReference.get(myModule, psiFile, resourceResolver));
VirtualFile other = myFixture.copyFileToProject("xmlpull/designtime.xml", "res/layout-land/designtime.xml");
assertNotNull(other);
IncludeReference.setIncludingLayout(getProject(), psiFile, "@layout/designtime");
assertEquals("@layout/designtime", IncludeReference.getIncludingLayout(psiFile));
}
}