@Override public int hashCode() { return toString().hashCode(); }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null) return false; if (getClass() != o.getClass()) return false; return toString().equals(o.toString()); }
@Test public void testGenerateStateContainerGetter() { assertThat( ComponentBodyGenerator.generateStateContainerGetter(ClassNames.STATE_CONTAINER) .toString()) .isEqualTo( "@java.lang.Override\n" + "protected com.facebook.litho.StateContainer getStateContainer() {\n" + " return mStateContainer;\n" + "}\n"); }
@Test public void testGenerateDispatchOnExitedRange() { assertThat(WorkingRangeGenerator.generateDispatchOnExitedRangeMethod(mSpecModel).toString()) .isEqualTo( "@java.lang.Override\n" + "public void dispatchOnExitedRange(java.lang.String name) {\n" + " com.facebook.litho.ComponentContext c = getScopedContext();\n" + " switch (name) {\n" + " case \"exit\": {\n" + " testExitedRangeMethod(c);\n" + " return;\n" + " }\n" + " case \"prefetch\": {\n" + " testExitedPrefetchMethod(c);\n" + " return;\n" + " }\n" + " }\n" + "}\n"); }
@Test public void testGenerateDispatchOnEnteredRange() { assertThat(WorkingRangeGenerator.generateDispatchOnEnteredRangeMethod(mSpecModel).toString()) .isEqualTo( "@java.lang.Override\n" + "public void dispatchOnEnteredRange(java.lang.String name) {\n" + " com.facebook.litho.ComponentContext c = getScopedContext();\n" + " switch (name) {\n" + " case \"enter\": {\n" + " testEnteredRangeMethod(c);\n" + " return;\n" + " }\n" + " case \"prefetch\": {\n" + " testEnteredPrefetchMethod(c);\n" + " return;\n" + " }\n" + " }\n" + "}\n"); }
@Test public void testBuildFunctionConstantInvalid() throws Exception { AbiDefinition functionDefinition = new AbiDefinition( true, Arrays.asList( new AbiDefinition.NamedType("param", "uint8")), "functionName", Collections.emptyList(), "type", false); MethodSpec methodSpec = solidityFunctionWrapper.buildFunction(functionDefinition); //CHECKSTYLE:OFF String expected = "public void functionName(java.math.BigInteger param) {\n" + " throw new RuntimeException(\"cannot call constant function with void return type\");\n" + "}\n"; //CHECKSTYLE:ON assertThat(methodSpec.toString(), is(expected)); }
@Test public void testOnUpdateStateWithTransitionMethods() { TypeSpecDataHolder dataHolder = ComponentBodyGenerator.generateOnUpdateStateMethods(mSpecModelWithTransitionDI); assertThat(dataHolder.getMethodSpecs()).hasSize(2); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "private TestUpdateStateMethodStateUpdate createTestUpdateStateMethodStateUpdate() {\n" + " return new TestUpdateStateMethodStateUpdate();\n" + "}\n"); assertThat(dataHolder.getMethodSpecs().get(1).toString()) .isEqualTo( "private TestUpdateStateWithTransitionMethodStateUpdate createTestUpdateStateWithTransitionMethodStateUpdate() {\n" + " return new TestUpdateStateWithTransitionMethodStateUpdate();\n" + "}\n"); }
@Test public void testGenerateEventHandlerFactories() { TypeSpecDataHolder dataHolder = EventGenerator.generateEventHandlerFactories(mSpecModel); assertThat(dataHolder.getMethodSpecs()).hasSize(2); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "public static <T extends java.lang.CharSequence> com.facebook.litho.EventHandler<java.lang.Object> testEventMethod1(com.facebook.litho.ComponentContext c,\n" + " java.lang.Object arg2, T arg3) {\n" + " return newEventHandler(c, -1400079064, new Object[] {\n" + " c,\n" + " arg2,\n" + " arg3,\n" + " });\n" + "}\n"); assertThat(dataHolder.getMethodSpecs().get(1).toString()) .isEqualTo( "public static com.facebook.litho.EventHandler<java.lang.Object> testEventMethod2(com.facebook.litho.ComponentContext c) {\n" + " return newEventHandler(c, -1400079063, new Object[] {\n" + " c,\n" + " });\n" + "}\n"); }
@Test public void testGenerateStaticGetTriggerMethods() { TypeSpecDataHolder dataHolder = TriggerGenerator.generateStaticGetTriggerMethods(mSpecModel); assertThat(dataHolder.getMethodSpecs()).hasSize(2); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "public static com.facebook.litho.EventTrigger testTriggerMethod1Trigger(com.facebook.litho.ComponentContext c,\n" + " java.lang.String key) {\n" + " int methodId = -773082596;\n" + " return newEventTrigger(c, key, methodId);\n" + "}\n"); assertThat(dataHolder.getMethodSpecs().get(1).toString()) .isEqualTo( "public static com.facebook.litho.EventTrigger testTriggerMethod2Trigger(com.facebook.litho.ComponentContext c,\n" + " java.lang.String key) {\n" + " int methodId = 969727739;\n" + " return newEventTrigger(c, key, methodId);\n" + "}\n"); } }
@Test public void testOnUpdateStateMethods() { TypeSpecDataHolder dataHolder = ComponentBodyGenerator.generateOnUpdateStateMethods(mSpecModelDI); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "private TestUpdateStateMethodStateUpdate createTestUpdateStateMethodStateUpdate() {\n" + " return new TestUpdateStateMethodStateUpdate();\n" + "}\n"); }
@Test public void testGenerateConstructorWithDependencyInjection() { final MethodSpec constructor = MethodSpec.constructorBuilder() .addModifiers(Modifier.PUBLIC) .addStatement("final Object testObject = new TestObject()") .build(); when(mDependencyInjectionHelper.generateConstructor(mSpecModelWithDI)) .thenReturn(constructor); TypeSpecDataHolder typeSpecDataHolder = generateConstructor(mSpecModelWithDI); assertThat(typeSpecDataHolder.getFieldSpecs()).isEmpty(); assertThat(typeSpecDataHolder.getMethodSpecs()).hasSize(1); assertThat(typeSpecDataHolder.getTypeSpecs()).isEmpty(); assertThat(typeSpecDataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "public Constructor() {\n" + " super(\"Test\");\n final Object testObject = new TestObject();\n" + "}\n"); } }
@Test public void testGenerateHasState() { TypeSpecDataHolder dataHolder = StateGenerator.generateHasState(mSpecModelWithState); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "@java.lang.Override\n" + "protected boolean hasState() {\n" + " return true;\n" + "}\n"); }
@Test public void testGetEventHandlerMethods() { TypeSpecDataHolder dataHolder = EventGenerator.generateGetEventHandlerMethods(mMockSpecModel); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "public static com.facebook.litho.EventHandler getObjectHandler(com.facebook.litho.ComponentContext context) {\n" + " if (context.getComponentScope() == null) {\n" + " return null;\n" + " }\n" + " return ((Test) context.getComponentScope()).objectHandler;\n" + "}\n"); }
@Test public void testGenerateTransferState() { TypeSpecDataHolder dataHolder = StateGenerator.generateTransferState(mSpecModelWithState); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "@java.lang.Override\n" + "protected void transferState(com.facebook.litho.StateContainer _prevStateContainer,\n" + " com.facebook.litho.StateContainer _nextStateContainer) {\n" + " TestWithStateStateContainer<T> prevStateContainer = (TestWithStateStateContainer<T>) _prevStateContainer;\n" + " TestWithStateStateContainer<T> nextStateContainer = (TestWithStateStateContainer<T>) _nextStateContainer;\n" + " nextStateContainer.arg1 = prevStateContainer.arg1;\n" + " nextStateContainer.arg4 = prevStateContainer.arg4;\n" + "}\n"); }
@Test public void testGenerateOnStateUpdateWithTransitionMethods() { TypeSpecDataHolder dataHolder = StateGenerator.generateOnStateUpdateMethods(mSpecModelWithStateWithTransition); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "protected static void updateCurrentStateWithTransition(com.facebook.litho.ComponentContext c) {\n" + " com.facebook.litho.Component _component = c.getComponentScope();\n" + " if (_component == null) {\n" + " return;\n" + " }\n" + " TestWithStateWithTransition.UpdateCurrentStateStateUpdate _stateUpdate = ((TestWithStateWithTransition) _component).createUpdateCurrentStateStateUpdate();\n" + " c.updateStateWithTransition(_stateUpdate, \"TestWithStateWithTransition.updateCurrentState\");\n" + "}\n"); }
@Test public void testGenerateTransferStateWithTransition() { TypeSpecDataHolder dataHolder = StateGenerator.generateTransferState(mSpecModelWithStateWithTransition); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "@java.lang.Override\n" + "protected void transferState(com.facebook.litho.StateContainer _prevStateContainer,\n" + " com.facebook.litho.StateContainer _nextStateContainer) {\n" + " TestWithStateWithTransitionStateContainer<T> prevStateContainer = (TestWithStateWithTransitionStateContainer<T>) _prevStateContainer;\n" + " TestWithStateWithTransitionStateContainer<T> nextStateContainer = (TestWithStateWithTransitionStateContainer<T>) _nextStateContainer;\n" + " nextStateContainer.arg1 = prevStateContainer.arg1;\n" + " nextStateContainer.arg4 = prevStateContainer.arg4;\n" + " synchronized (prevStateContainer._transitions) {\n" + " nextStateContainer._transitions = new ArrayList<>(prevStateContainer._transitions);\n" + " }\n" + "}\n"); }
@Test public void testGenerateLazyStateUpdateMethods() { TypeSpecDataHolder dataHolder = StateGenerator.generateLazyStateUpdateMethods(mSpecModelWithState); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "protected static void lazyUpdateArg4(com.facebook.litho.ComponentContext c,\n" + " final boolean lazyUpdateValue) {\n" + " com.facebook.litho.Component _component = c.getComponentScope();\n" + " if (_component == null) {\n" + " return;\n" + " }\n" + " com.facebook.litho.ComponentLifecycle.StateUpdate _stateUpdate = new com.facebook.litho.ComponentLifecycle.StateUpdate() {\n" + " @java.lang.Override\n" + " public void updateState(com.facebook.litho.StateContainer _stateContainer) {\n" + " TestWithStateStateContainer stateContainer = (TestWithStateStateContainer) _stateContainer;\n" + " stateContainer.arg4 = lazyUpdateValue;\n" + " }\n" + " };\n" + " c.updateStateLazy(_stateUpdate);\n" + "}\n"); }
@Test public void testGenerateLazyStateUpdateMethodsForGenerics() { TypeSpecDataHolder dataHolder = StateGenerator.generateLazyStateUpdateMethods(mSpecModelWithLazyGeneric); assertThat(dataHolder.getMethodSpecs()).hasSize(1); assertThat(dataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "protected static <T extends java.lang.CharSequence> void lazyUpdateArg0(com.facebook.litho.ComponentContext c,\n" + " final T lazyUpdateValue) {\n" + " com.facebook.litho.Component _component = c.getComponentScope();\n" + " if (_component == null) {\n" + " return;\n" + " }\n" + " com.facebook.litho.ComponentLifecycle.StateUpdate _stateUpdate = new com.facebook.litho.ComponentLifecycle.StateUpdate() {\n" + " @java.lang.Override\n" + " public void updateState(com.facebook.litho.StateContainer _stateContainer) {\n" + " TestWithLazyGenStateContainer stateContainer = (TestWithLazyGenStateContainer) _stateContainer;\n" + " stateContainer.arg0 = lazyUpdateValue;\n" + " }\n" + " };\n" + " c.updateStateLazy(_stateUpdate);\n" + "}\n"); }
@Test public void testGenerateConstructorWithoutDependencyInjection() { TypeSpecDataHolder typeSpecDataHolder = generateConstructor(mSpecModelWithoutDI); assertThat(typeSpecDataHolder.getFieldSpecs()).isEmpty(); assertThat(typeSpecDataHolder.getMethodSpecs()).hasSize(1); assertThat(typeSpecDataHolder.getTypeSpecs()).isEmpty(); assertThat(typeSpecDataHolder.getMethodSpecs().get(0).toString()) .isEqualTo("private Constructor() {\n super(\"Test\");\n" + "}\n"); }
@Test public void testGenerateWithoutDependencyInjection() { TypeSpecDataHolder typeSpecDataHolder = generateDelegates(mSpecModelWithoutDI, LAYOUT_SPEC_DELEGATE_METHODS_MAP, RunMode.normal()); assertThat(typeSpecDataHolder.getFieldSpecs()).isEmpty(); assertThat(typeSpecDataHolder.getMethodSpecs()).hasSize(1); assertThat(typeSpecDataHolder.getTypeSpecs()).isEmpty(); assertThat(typeSpecDataHolder.getMethodSpecs().get(0).toString()) .isEqualTo( "@java.lang.Override\n" + "protected com.facebook.litho.Component onCreateLayout(com.facebook.litho.ComponentContext c) {\n" + " com.facebook.litho.Component _result;\n" + " _result = (com.facebook.litho.Component) TestSpec.onCreateLayout(\n" + " (com.facebook.litho.ComponentContext) c,\n" + " (boolean) prop,\n" + " (int) state);\n" + " return _result;\n" + "}\n"); }