/** * Copyright 2004-2016 Riccardo Solmi. All rights reserved. * This file is part of the Whole Platform. * * The Whole Platform is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The Whole Platform 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 the Whole Platform. If not, see <http://www.gnu.org/licenses/>. */ package org.whole.lang.reflect; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; import org.whole.lang.testentities.reflect.TestEntitiesLanguageDeployer; import org.whole.lang.testentities.reflect.TestEntitiesLanguageKit; import org.whole.test.KnownFailingTests; /** * @author Riccardo Solmi */ public class LanguageRequestHandlerTest { @Category(KnownFailingTests.class) @Test public void testAddLanguageRequestHandler() { ILanguageRequestHandler handler = ReflectionFactory.getLanguageRequestHandler(); ReflectionFactory.addLanguageRequestHandler(handler); Assert.assertSame(handler, ReflectionFactory.getLanguageRequestHandler()); ILanguageRequestHandler handler0 = new AbstractLanguageRequestHandler() { public int getPriority() { return 0; } }; ILanguageRequestHandler handler0a = new AbstractLanguageRequestHandler() { public int getPriority() { return 0; } }; ILanguageRequestHandler handler10 = new AbstractLanguageRequestHandler() { public int getPriority() { return 10; } }; ReflectionFactory.addLanguageRequestHandler(handler0); Assert.assertSame(handler0, ReflectionFactory.getLanguageRequestHandler()); ReflectionFactory.addLanguageRequestHandler(handler0a); Assert.assertSame(handler0, ReflectionFactory.getLanguageRequestHandler()); ReflectionFactory.addLanguageRequestHandler(handler10); Assert.assertSame(handler10, ReflectionFactory.getLanguageRequestHandler()); ReflectionFactory.addLanguageRequestHandler(handler0); Assert.assertSame(handler10, ReflectionFactory.getLanguageRequestHandler()); ReflectionFactory.addLanguageRequestHandler( LoggerLanguageRequestHandler.instance()); Assert.assertSame(LoggerLanguageRequestHandler.instance(), ReflectionFactory.getLanguageRequestHandler()); } @Test public void testRemoveLanguageRequestHandler() { //TODO } @Test public void testDeployLanguage() { ILanguageRequestHandler fakeHandler = new AbstractLanguageRequestHandler() { public boolean deployLanguage(String languageURI) { return languageURI.equals("fakeLanguage") || super.deployLanguage(languageURI); } }; ILanguageRequestHandler testHandler = new AbstractLanguageRequestHandler() { public boolean deployLanguage(String languageURI) { if (languageURI.equals(TestEntitiesLanguageKit.URI)) { ReflectionFactory.deploy(TestEntitiesLanguageDeployer.class); return true; } else return false; } }; try { ReflectionFactory.getLanguageKit("notExistantURI"); Assert.fail(); } catch (IllegalArgumentException e) { } ReflectionFactory.addLanguageRequestHandler(fakeHandler); try { ReflectionFactory.getLanguageKit("fakeLanguage"); Assert.fail(); } catch (IllegalArgumentException e) { } ReflectionFactory.undeploy(TestEntitiesLanguageDeployer.class); ReflectionFactory.addLanguageRequestHandler(testHandler); Assert.assertNotNull(ReflectionFactory.getLanguageKit(TestEntitiesLanguageKit.URI)); ReflectionFactory.removeLanguageRequestHandler(testHandler); ReflectionFactory.undeploy(TestEntitiesLanguageDeployer.class); ReflectionFactory.deploy(new LazyLanguageDeployer( new TestEntitiesLanguageDeployer(), "http://lang.whole.org/TestEntities", "TestEntities")); Assert.assertNotNull(ReflectionFactory.getLanguageKit("http://lang.whole.org/TestEntities")); } }