public void testComparison() throws Exception { DefDescriptor<?> fakeComponent = DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class); DefDescriptor<?> fakeComponent2 = DefDescriptorImpl.getInstance("Aura:FakeComponent", ComponentDef.class); DefDescriptor<?> fooComponent = DefDescriptorImpl.getInstance("aura:foo", ComponentDef.class); DefDescriptor<?> fakeComponentLayout = DefDescriptorImpl.getInstance("aura:fakeComponent", LayoutsDef.class); assertTrue(fakeComponent.compareTo(fakeComponent2) == 0); assertTrue(fooComponent.compareTo(fakeComponent) > 0); assertTrue(fakeComponent.compareTo(fooComponent) < 0); assertTrue(fakeComponent.compareTo(fakeComponentLayout) < 0); assertTrue(fakeComponentLayout.compareTo(fakeComponent) > 0); }
public void testApexDescriptors() { DefDescriptor<ControllerDef> descriptor = DefDescriptorImpl.getInstance("apex://foo.Bar", ControllerDef.class); assertEquals("apex", descriptor.getPrefix()); assertEquals("Bar", descriptor.getName()); assertEquals("foo", descriptor.getNamespace()); assertEquals("apex://foo.Bar", descriptor.getQualifiedName()); }
public void testControllerDescriptorStringLocation() { DefDescriptor<ControllerDef> descriptor = DefDescriptorImpl.getInstance("java://foo.Bar", ControllerDef.class); assertEquals("java", descriptor.getPrefix()); assertEquals("Bar", descriptor.getName()); assertEquals("foo", descriptor.getNamespace()); assertEquals("java://foo.Bar", descriptor.getQualifiedName()); }
public void testBadNameChars() { try { DefDescriptorImpl.getInstance( "markup://foo.1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ+/", ComponentDef.class); fail("did not fail on invalid characters"); } catch (AuraRuntimeException expected) { // ignore, I suppose we could check the string, but we should // probably change the exception as well. } }
@ThreadHostileTest("cache dependent") public void testGetInstance() throws Exception { // test getInstance(tag, defClass) DefDescriptor<?> testDescriptor = DefDescriptorImpl.getInstance("aura:text", ComponentDef.class); // getInstance should never return null assertNotNull(testDescriptor); // even if the component doesn't exist assertNotNull(DefDescriptorImpl.getInstance("fake:component", ComponentDef.class)); // subsequent calls to getInstance should return objects that are the same. assertSame(testDescriptor, (DefDescriptorImpl.getInstance("aura:text", ComponentDef.class))); // test getInstance(null, defClass) DefDescriptor<ComponentDef> testDescriptorNullTag = null; try { testDescriptorNullTag = DefDescriptorImpl.getInstance(null, ComponentDef.class); fail("Should have thrown AuraException for null tag in ComponentDefDescriptor"); } catch (AuraRuntimeException expected) { assertEquals("descriptor is null", expected.getMessage()); } // test getInstance(name, null) try { testDescriptorNullTag = DefDescriptorImpl.getInstance("aura:text", null); fail("Should have thrown AuraException for null defClass in ComponentDefDescriptor"); } catch (AuraRuntimeException expected) { assertEquals("descriptor is null", expected.getMessage()); } assertNull(testDescriptorNullTag); // test getting type instances. // Why did qualified name EVER match?? --fka3 // It is unncetain why this fails. Here is a bug for investigation: W-2051904. // testDescriptor = DefDescriptorImpl.getInstance("Aura.Component", TypeDef.class); // assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("aura://Aura.Component", // TypeDef.class))); testDescriptor = DefDescriptorImpl.getInstance("aura://Aura.Component[]", TypeDef.class); assertEquals( testDescriptor, (DefDescriptorImpl.getInstance("Aura.Component[]", TypeDef.class))); testDescriptor = DefDescriptorImpl.getInstance("aura://List<String>", TypeDef.class); assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("List<String>", TypeDef.class))); testDescriptor = DefDescriptorImpl.getInstance("aura://List", TypeDef.class); assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("List", TypeDef.class))); // no type validation for map sub-types testDescriptor = DefDescriptorImpl.getInstance("Map<Aura.Component>", TypeDef.class); assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("Map<String>", TypeDef.class))); }
public void testGetDefType() throws Exception { DefDescriptor<ComponentDef> testDescriptor = DefDescriptorImpl.getInstance("aura:text", ComponentDef.class); assertEquals(testDescriptor.getDefType(), DefType.COMPONENT); }
public void testSerialize2() throws Exception { DefDescriptor<ControllerDef> descriptor = DefDescriptorImpl.getInstance("java://foo.Bar", ControllerDef.class); serializeAndGoldFile(descriptor); }
public void testEquals() throws Exception { testEquals( DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:fakeComponent"), 0); testEquals( DefDescriptorImpl.getInstance("aurA:Fakecomponent", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:fakeComponent"), 0); testEquals( DefDescriptorImpl.getInstance("fake:component", ComponentDef.class), vendor.makeComponentDefDescriptor("fake:component"), 0); testEquals( DefDescriptorImpl.getInstance("aura:text", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:text"), 0); testEquals( DefDescriptorImpl.getInstance("some:component", ComponentDef.class), DefDescriptorImpl.getInstance("markup://some:component", ComponentDef.class), 0); /* this class of descriptors does not default a prefix, which makes sense in some cases like for renderer, provider, etc. testEquals(DefDescriptorImpl.getInstance("js://some.component", HelperDef.class), DefDescriptorImpl.getInstance("some.component", HelperDef.class), 0); */ testEquals( DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class), vendor.makeComponentDefDescriptor("fake:component"), -1); testEquals( DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:text"), -1); testEquals( DefDescriptorImpl.getInstance("fake:component", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:fakeComponent"), 1); testEquals( DefDescriptorImpl.getInstance("fake:component", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:text"), 1); testEquals( DefDescriptorImpl.getInstance("aura:text", ComponentDef.class), vendor.makeComponentDefDescriptor("fake:component"), -1); testEquals( DefDescriptorImpl.getInstance("aura:text", ComponentDef.class), vendor.makeComponentDefDescriptor("aura:fakeComponent"), 1); testEquals( DefDescriptorImpl.getInstance("aura:text", ApplicationDef.class), vendor.makeComponentDefDescriptor("aura:text"), -1); }
@Override public <D extends Definition> Set<DefDescriptor<D>> find(DefDescriptor<D> matcher) { Set<DefDescriptor<D>> matched; if (matcher.getNamespace().equals("*")) { matched = new LinkedHashSet<DefDescriptor<D>>(); String qualifiedNamePattern = null; switch (matcher.getDefType()) { case CONTROLLER: case TESTSUITE: case MODEL: case RENDERER: case HELPER: case STYLE: case TYPE: case PROVIDER: case SECURITY_PROVIDER: qualifiedNamePattern = "%s://%s.%s"; break; case ATTRIBUTE: case LAYOUT: case LAYOUT_ITEM: case TESTCASE: case APPLICATION: case COMPONENT: case INTERFACE: case EVENT: case DOCUMENTATION: case LAYOUTS: case NAMESPACE: case THEME: qualifiedNamePattern = "%s://%s:%s"; break; case ACTION: // TODO: FIXME throw new AuraRuntimeException("Find on ACTION defs not supported."); } for (String namespace : delegateRegistries.getAllNamespaces()) { String qualifiedName = String.format( qualifiedNamePattern, matcher.getPrefix() != null ? matcher.getPrefix() : "*", namespace, matcher.getName() != null ? matcher.getName() : "*"); @SuppressWarnings("unchecked") DefDescriptor<D> namespacedMatcher = (DefDescriptor<D>) DefDescriptorImpl.getInstance( qualifiedName, matcher.getDefType().getPrimaryInterface()); DefRegistry<D> registry = getRegistryFor(namespacedMatcher); if (registry != null) { matched.addAll(registry.find(namespacedMatcher)); } } } else { matched = getRegistryFor(matcher).find(matcher); } if (localDescs != null) { DescriptorFilter filter = new DescriptorFilter(matcher.getQualifiedName()); for (DefDescriptor<? extends Definition> desc : localDescs) { if (filter.matchDescriptor(desc)) { @SuppressWarnings("unchecked") DefDescriptor<D> localDesc = (DefDescriptor<D>) desc; matched.add(localDesc); } } } return matched; }