### Question:
ProgramLifecycleService { public ProgramStatus getProgramStatus(ProgramId programId) throws Exception { ApplicationId appId = programId.getParent(); ApplicationSpecification appSpec = store.getApplication(appId); if (appSpec == null) { throw new NotFoundException(appId); } return getExistingAppProgramStatus(appSpec, programId); } @Inject  ProgramLifecycleService(CConfiguration cConf,
                          Store store, ProfileService profileService, ProgramRuntimeService runtimeService,
                          PropertiesResolver propertiesResolver,
                          PreferencesService preferencesService, AuthorizationEnforcer authorizationEnforcer,
                          AuthenticationContext authenticationContext,
                          ProvisionerNotifier provisionerNotifier, ProvisioningService provisioningService,
                          ProgramStateWriter programStateWriter); ProgramStatus getProgramStatus(ProgramId programId); Map<ProgramId, ProgramStatus> getProgramStatuses(Collection<ProgramId> programIds); long getProgramRunCount(ProgramId programId); List<RunCountResult> getProgramRunCounts(List<ProgramId> programIds); RunRecordDetail getRunRecordMeta(ProgramRunId programRunId); List<RunRecordDetail> getRunRecordMetas(ProgramId programId, ProgramRunStatus programRunStatus,
                                                 long start, long end, int limit); List<RunRecord> getRunRecords(ProgramId programId, ProgramRunStatus programRunStatus,
                                       long start, long end, int limit); List<ProgramHistory> getRunRecords(Collection<ProgramId> programs, ProgramRunStatus programRunStatus,
                                            long start, long end, int limit); @Nullable ProgramSpecification getProgramSpecification(ProgramId programId); RunId run(ProgramId programId, Map<String, String> overrides, boolean debug); Set<RunId> restart(ApplicationId applicationId, long startTimeSeconds, long endTimeSeconds); RunId runInternal(ProgramId programId, Map<String, String> userArgs, Map<String, String> sysArgs,
                           boolean debug); ProgramController start(ProgramId programId, Map<String, String> overrides, boolean debug); void stop(ProgramId programId); void stop(ProgramId programId, @Nullable String runId); List<ListenableFuture<ProgramRunId>> issueStop(ProgramId programId, @Nullable String runId); void saveRuntimeArgs(ProgramId programId, Map<String, String> runtimeArgs); Map<String, String> getRuntimeArgs(@Name("programId") ProgramId programId); void updateProgramLogLevels(ProgramId programId, Map<String, LogEntry.Level> logLevels,
                                     @Nullable String runId); void resetProgramLogLevels(ProgramId programId, Set<String> loggerNames,
                                    @Nullable String runId); void ensureProgramExists(ProgramId programId); void setInstances(ProgramId programId, int instances); List<ProgramRecord> list(NamespaceId namespaceId, ProgramType type);  }### Answer:
@Test public void testEmptyRunsIsStopped() { Assert.assertEquals(ProgramStatus.STOPPED, ProgramLifecycleService.getProgramStatus(Collections.emptyList())); }