/**
* AnalyzerBeans
* Copyright (C) 2014 Neopost - Customer Information Management
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.eobjects.analyzer.util.convert;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import junit.framework.TestCase;
import org.eobjects.analyzer.util.VFSUtils;
import org.eobjects.analyzer.util.VfsResource;
import org.eobjects.analyzer.util.convert.ResourceConverter.ResourceTypeHandler;
import org.apache.metamodel.util.FileResource;
import org.apache.metamodel.util.Resource;
import org.apache.metamodel.util.UrlResource;
public class ResourceConverterTest extends TestCase {
public void testParse() throws Exception {
ResourceConverter resourceConverter = new ResourceConverter();
assertEquals("url", resourceConverter.parseStructure("url://foobar").getScheme());
assertEquals("foobar", resourceConverter.parseStructure("url://foobar").getPath());
assertEquals("file", resourceConverter.parseStructure("file://c:/blabla").getScheme());
assertEquals("c:/blabla", resourceConverter.parseStructure("file://c:/blabla").getPath());
assertEquals("/c:/blabla", resourceConverter.parseStructure("file:///c:/blabla").getPath());
}
public void testConvertFileResource() throws Exception {
List<? extends ResourceTypeHandler<?>> handlers = Arrays.asList(new FileResourceTypeHandler());
ResourceConverter converter = new ResourceConverter(handlers, "foo");
FileResource resource1 = new FileResource("foo/bar.txt");
String str = converter.toString(resource1);
assertEquals("file://foo/bar.txt", str);
Resource resource2 = converter.fromString(Resource.class, str);
assertTrue(resource2 instanceof FileResource);
assertEquals("foo/bar.txt", ((FileResource) resource2).getFile().getPath().replace('\\', '/'));
}
public void testConvertUrlResource() throws Exception {
List<? extends ResourceTypeHandler<?>> handlers = Arrays.asList(new UrlResourceTypeHandler());
ResourceConverter converter = new ResourceConverter(handlers, "foo");
UrlResource resource1 = new UrlResource("http://localhost");
String str = converter.toString(resource1);
assertEquals("url://http://localhost", str);
Resource resource2 = converter.fromString(Resource.class, str);
assertTrue(resource2 instanceof UrlResource);
assertEquals("localhost", resource2.getName());
}
public void testConvertVfsResource() throws Exception {
List<? extends ResourceTypeHandler<?>> handlers = Arrays.asList(new VfsResourceTypeHandler());
ResourceConverter converter = new ResourceConverter(handlers, "foo");
VfsResource resource1 = new VfsResource(VFSUtils.getFileSystemManager().resolveFile("target"));
String str = converter.toString(resource1);
String absoluteFilePath = new File("target").getAbsolutePath().replaceAll("\\\\", "/");
if (absoluteFilePath.startsWith("/")) {
assertEquals("vfs://file://" + absoluteFilePath, str);
} else {
assertEquals("vfs://file:///" + absoluteFilePath, str);
}
Resource resource2 = converter.fromString(Resource.class, str);
assertTrue(resource2 instanceof VfsResource);
assertEquals("target", resource2.getName());
}
}