/* * $Id$ * * License Agreement. * * Rich Faces - Natural Ajax for Java Server Faces (JSF) * * Copyright (C) 2007 Exadel, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1 as published by the Free Software Foundation. * * This library 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 library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.richfaces.cdk.xmlconfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Collection; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.richfaces.cdk.As; import org.richfaces.cdk.CdkClassLoader; import org.richfaces.cdk.CdkTestBase; import org.richfaces.cdk.CdkTestRunner; import org.richfaces.cdk.FileManager; import org.richfaces.cdk.Mock; import org.richfaces.cdk.Source; import org.richfaces.cdk.Sources; import org.richfaces.cdk.model.ClassName; import org.richfaces.cdk.model.PropertyBase; import org.xml.sax.ext.EntityResolver2; import com.google.common.collect.Iterables; import com.google.inject.Binder; import com.google.inject.Inject; /** * <p class="changed_added_4_0"> * </p> * * @author asmirnov@exadel.com * */ @RunWith(CdkTestRunner.class) public class FragmentParserTest extends CdkTestBase { @Inject @As(JAXBBinding.class) JAXB binder; @Inject FragmentParser parser; @Inject @As(CdkEntityResolver.class) EntityResolver2 resolver; @Mock @Source(Sources.FACES_CONFIGS) private FileManager configSource; @Mock @Source(Sources.RENDERER_TEMPLATES) private FileManager templatesSource; @Override public void configure(Binder binder) { super.configure(binder); binder.bind(CdkClassLoader.class).toInstance(createClassLoader()); } @Test public void nestedXincludeTest() throws Exception { Collection<PropertyBase> properties = parser.parseProperties("urn:resource:org/richfaces/cdk/xmlconfig/parent2.xml"); assertEquals(2, properties.size()); } @Test public void parserTest() throws Exception { Collection<PropertyBase> properties = parser.parseProperties("urn:resource:org/richfaces/cdk/xmlconfig/fragment.xml"); assertEquals(3, properties.size()); } @Test public void propertyTest() throws Exception { Collection<PropertyBase> properties = parser.parseProperties("urn:resource:org/richfaces/cdk/xmlconfig/properties.xml"); assertEquals(1, properties.size()); PropertyBase property = Iterables.getOnlyElement(properties); assertEquals("ontest2", property.getName()); assertEquals("int", property.getType().getName()); assertEquals("test2 property", property.getDescription()); assertEquals("ontest2.png", property.getIcon().getSmallIcon()); assertEquals("test2 event property", property.getDisplayName()); assertEquals("3", property.getDefaultValue()); assertEquals("15", property.getSuggestedValue()); // CDK extensions. assertTrue(property.getGenerate()); assertTrue(property.isHidden()); assertTrue(property.isLiteral()); assertTrue(property.isPassThrough()); assertTrue(property.isRequired()); List<ClassName> signature = property.getSignature().getParameters(); assertEquals(2, signature.size()); String alias = property.getAliasFor(); assertEquals("bar", alias); } @Test public void xincludeTest() throws Exception { Collection<PropertyBase> properties = parser.parseProperties("urn:resource:org/richfaces/cdk/xmlconfig/parent.xml"); assertEquals(2, properties.size()); } }