### Question:
WeaverFactory { public WeaverComponent buildWeaverComponent(@NonNull ComponentType componentType, @NonNull RxLogger.Scope scope, @NonNull ProceedingJoinPoint joinPoint, @NonNull MessageManager messageManager) { switch (componentType) { case FLOWABLE: return new WeaverComponentFlowable(scope, joinPoint, messageManager, callback); case OBSERVABLE: return new WeaverComponentObservable(scope, joinPoint, messageManager, callback); case SINGLE: return new WeaverComponentSingle(scope, joinPoint, messageManager, callback); case MAYBE: return new WeaverComponentMaybe(scope, joinPoint, messageManager, callback); case COMPLETABLE: return new WeaverComponentCompletable(scope, joinPoint, messageManager, callback); default: return null; } } WeaverFactory(); WeaverComponent buildWeaverComponent(@NonNull ComponentType componentType, @NonNull RxLogger.Scope scope, @NonNull ProceedingJoinPoint joinPoint, @NonNull MessageManager messageManager); @SuppressWarnings("unchecked") WeaverSubscribeOnComponent buildWeaverSubscribeOnComponent(@NonNull ComponentType componentType, @NonNull ProceedingJoinPoint joinPoint); @SuppressWarnings("unchecked") WeaverObserveOnComponent buildWeaverObserveOnComponent(@NonNull ComponentType componentType, @NonNull ProceedingJoinPoint joinPoint);  }### Answer:
@Test public void buildWeaverComponent() { assertTrue(weaverFactory.buildWeaverComponent(ComponentType.OBSERVABLE, RxLogger.Scope.ALL, null, null) instanceof WeaverComponentObservable); assertTrue(weaverFactory.buildWeaverComponent(ComponentType.FLOWABLE, RxLogger.Scope.ALL, null, null) instanceof WeaverComponentFlowable); assertTrue(weaverFactory.buildWeaverComponent(ComponentType.SINGLE, RxLogger.Scope.ALL, null, null) instanceof WeaverComponentSingle); assertTrue(weaverFactory.buildWeaverComponent(ComponentType.MAYBE, RxLogger.Scope.ALL, null, null) instanceof WeaverComponentMaybe); assertTrue(weaverFactory.buildWeaverComponent(ComponentType.COMPLETABLE, RxLogger.Scope.ALL, null, null) instanceof WeaverComponentCompletable); }