### Question:
GodEye { public <S extends SubjectSupport<M>, M> Observable<M> moduleObservable(@ModuleName String moduleName) throws UninstallException { return this.<S>getModule(moduleName).subject(); } private  GodEye(); static GodEye instance(); synchronized GodEye install(final GodEyeConfig godEyeConfig, NotificationConfig notificationConfig); GodEye install(final GodEyeConfig godEyeConfig); GodEye install(final GodEyeConfig godEyeConfig, boolean enableNotification); synchronized GodEye uninstall(); synchronized T getModule(@ModuleName String moduleName); synchronized @ModuleName Set<String> getInstalledModuleNames(); Observable<M> moduleObservable(@ModuleName String moduleName); Disposable observeModule(@ModuleName String moduleName, Consumer<M> consumer); Application getApplication(); @Deprecated void init(Application application); static final Set<String> ALL_MODULE_NAMES; }### Answer:
@Test public void moduleObservable() { GodEye.instance().uninstall(); try { GodEye.instance().moduleObservable(null); fail(); } catch (UninstallException ignore) { } try { GodEye.instance().moduleObservable(""); fail(); } catch (UninstallException ignore) { } try { GodEye.instance().moduleObservable(GodEye.ModuleName.STARTUP); fail(); } catch (UninstallException ignore) { } GodEye.instance().install(GodEyeConfig.noneConfigBuilder().withStartupConfig(new StartupConfig()).build()); try { GodEye.instance().moduleObservable(GodEye.ModuleName.STARTUP).test().assertNoValues(); } catch (UninstallException e) { fail(); } }