TEST_F(AnalysisDriverFixture,SimpleProject_NonPATToPATProject) { { // create project with one discrete variable SimpleProject project = getCleanSimpleProject("SimpleProject_NonPATToPATProject"); openstudio::path measuresDir = resourcesPath() / toPath("/utilities/BCL/Measures"); openstudio::path dir = measuresDir / toPath("SetWindowToWallRatioByFacade"); BCLMeasure measure = BCLMeasure::load(dir).get(); RubyMeasure rmeasure(measure); project.analysis().problem().push(MeasureGroup("My Variable",MeasureVector(1u,rmeasure))); DataPoint baseline = project.baselineDataPoint(); EXPECT_EQ(1u,baseline.variableValues().size()); EXPECT_TRUE(project.analysis().isDirty()); EXPECT_EQ(1u,project.analysis().dataPoints().size()); project.save(); } { SimpleProject project = getPATProject("SimpleProject_NonPATToPATProject"); DataPoint baseline = project.baselineDataPoint(); EXPECT_EQ(2u,baseline.variableValues().size()); EXPECT_FALSE(project.analysis().isDirty()); // openPATProject calls save in this case EXPECT_EQ(1u,project.analysis().dataPoints().size()); project.save(); } { SimpleProject project = getPATProject("SimpleProject_NonPATToPATProject"); DataPoint baseline = project.baselineDataPoint(); EXPECT_EQ(2u,baseline.variableValues().size()); EXPECT_FALSE(project.analysis().isDirty()); // nothing to change in this case EXPECT_EQ(1u,project.analysis().dataPoints().size()); } }
TEST_F(AnalysisDriverFixture,SimpleProject_EditProblemWithTwoWorkflows) { // Written to reproduce Bug 1189 { // Create PAT project with an IDF measure SimpleProject project = getCleanPATProject("SimpleProject_EditProblemWithTwoWorkflows"); Problem problem = project.analysis().problem(); OptionalInt index = problem.getWorkflowStepIndexByJobType(JobType::EnergyPlusPreProcess); ASSERT_TRUE(index); MeasureGroup dv("Idf Measure",MeasureVector(1u,NullMeasure())); problem.insert(*index,dv); BOOST_FOREACH(const BCLMeasure& measure,BCLMeasure::patApplicationMeasures()) { if (measure.inputFileType() == FileReferenceType::IDF) { RubyMeasure measure(measure); dv.push(measure); break; } } project.save(); ProjectDatabase database = project.projectDatabase(); RunManager runManager = project.runManager(); WorkflowRecordVector workflowRecords = WorkflowRecord::getWorkflowRecords(database); EXPECT_EQ(2u,workflowRecords.size()); BOOST_FOREACH(const WorkflowRecord& wr,workflowRecords) { EXPECT_NO_THROW(runManager.loadWorkflow(wr.runManagerWorkflowKey())); } }
TEST_F(AnalysisDriverFixture,PATProject_CreateOpenAndSaveAs) { openstudio::path projectDir; { // Create a PAT project SimpleProject patProject = getCleanPATProject("PATProject_CreateOpenAndSaveAs"); // Populate it patProject.analysis().setName("PAT Project: Create, Open, and Save As"); Model model = model::exampleModel(); openstudio::path p = toPath("./example.osm"); model.save(p,true); FileReference seedModel(p); patProject.setSeed(seedModel); // (feature not in PAT, but not incompatible) DesignOfExperimentsOptions algOptions(DesignOfExperimentsType::FullFactorial); DesignOfExperiments algorithm(algOptions); patProject.analysis().setAlgorithm(algorithm); // Save it patProject.save(); projectDir = patProject.projectDir(); } // Open Project OptionalSimpleProject project = openPATProject(projectDir); ASSERT_TRUE(project); EXPECT_TRUE(project->isPATProject()); // Save Project As openstudio::path newProjectDir = toPath("AnalysisDriverFixtureData") / toPath("PATProjectCreateOpenAndSaveAsCopy"); boost::filesystem::remove_all(newProjectDir); ASSERT_TRUE(project->saveAs(newProjectDir)); OptionalSimpleProject projectCopy = openPATProject(newProjectDir); ASSERT_TRUE(projectCopy); EXPECT_TRUE(project->isPATProject()); EXPECT_TRUE(project->analysis().algorithm()); }