-
Notifications
You must be signed in to change notification settings - Fork 222
Fix GroundHeatExchangerXXX cloning to another model #5460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from all commits
5a22da9
5da32dc
b5929e4
fcedbce
2dc84a1
796cbb8
c7621c8
aa141f0
786f151
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -189,7 +189,7 @@ TEST_F(ModelFixture, GroundHeatExchangerHorizontalTrench_Clone) { | |
|
|
||
| auto ghClone = gh.clone(m).cast<GroundHeatExchangerHorizontalTrench>(); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedKusudaAchenbach>().size()); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedKusudaAchenbach>().size()); | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should clone into the same model create a new SGT object here? If not, how can this be prevented?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't see a precedent for determining whether to clone based on the model that the GHE is in. And I don't see an issue with just cloning into the same model. |
||
|
|
||
| ModelObject undisturbedGroundTemperatureModel = gh.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedKusudaAchenbach> uka = | ||
|
|
@@ -201,15 +201,23 @@ TEST_F(ModelFixture, GroundHeatExchangerHorizontalTrench_Clone) { | |
| boost::optional<SiteGroundTemperatureUndisturbedKusudaAchenbach> ukaClone = | ||
| undisturbedGroundTemperatureModelClone.optionalCast<SiteGroundTemperatureUndisturbedKusudaAchenbach>(); | ||
| ASSERT_TRUE(ukaClone); | ||
| EXPECT_EQ(sgt, ukaClone.get()); | ||
| EXPECT_NE(sgt, ukaClone.get()); | ||
|
|
||
| gh.remove(); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedKusudaAchenbach>().size()); | ||
|
|
||
| GroundHeatExchangerHorizontalTrench gh2(m, ukaClone.get()); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| ghClone.remove(); | ||
| EXPECT_EQ(0u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedKusudaAchenbach>().size()); | ||
|
|
||
| ModelObject undisturbedGroundTemperatureModel2 = gh2.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedKusudaAchenbach> uka2 = | ||
| undisturbedGroundTemperatureModel2.optionalCast<SiteGroundTemperatureUndisturbedKusudaAchenbach>(); | ||
| ASSERT_TRUE(uka2); | ||
| EXPECT_EQ(ukaClone.get(), uka2.get()); | ||
| } | ||
|
|
||
| { | ||
|
|
@@ -222,7 +230,7 @@ TEST_F(ModelFixture, GroundHeatExchangerHorizontalTrench_Clone) { | |
|
|
||
| auto ghClone = gh.clone(m).cast<GroundHeatExchangerHorizontalTrench>(); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedXing>().size()); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedXing>().size()); | ||
|
|
||
| ModelObject undisturbedGroundTemperatureModel = gh.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedXing> ux = undisturbedGroundTemperatureModel.optionalCast<SiteGroundTemperatureUndisturbedXing>(); | ||
|
|
@@ -231,16 +239,50 @@ TEST_F(ModelFixture, GroundHeatExchangerHorizontalTrench_Clone) { | |
|
|
||
| ModelObject undisturbedGroundTemperatureModelClone = ghClone.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedXing> uxClone = | ||
| undisturbedGroundTemperatureModel.optionalCast<SiteGroundTemperatureUndisturbedXing>(); | ||
| undisturbedGroundTemperatureModelClone.optionalCast<SiteGroundTemperatureUndisturbedXing>(); | ||
| ASSERT_TRUE(uxClone); | ||
| EXPECT_EQ(sgt, uxClone.get()); | ||
| EXPECT_NE(sgt, uxClone.get()); | ||
|
|
||
| gh.remove(); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedXing>().size()); | ||
|
|
||
| GroundHeatExchangerHorizontalTrench gh2(m, uxClone.get()); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| ghClone.remove(); | ||
| EXPECT_EQ(0u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<GroundHeatExchangerHorizontalTrench>().size()); | ||
| EXPECT_EQ(1u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedXing>().size()); | ||
|
|
||
| ModelObject undisturbedGroundTemperatureModel2 = gh2.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedXing> ux2 = | ||
| undisturbedGroundTemperatureModel2.optionalCast<SiteGroundTemperatureUndisturbedXing>(); | ||
| ASSERT_TRUE(ux2); | ||
| EXPECT_EQ(uxClone.get(), ux2.get()); | ||
| } | ||
|
|
||
| //clone into another model | ||
| { | ||
| Model m; | ||
| GroundHeatExchangerHorizontalTrench testObject(m); | ||
|
|
||
| auto testObjectClone = testObject.clone(m).cast<GroundHeatExchangerHorizontalTrench>(); | ||
|
|
||
| Model m2; | ||
| auto testObjectClone2 = testObject.clone(m2).cast<GroundHeatExchangerHorizontalTrench>(); | ||
|
|
||
| EXPECT_NE(testObjectClone2, testObjectClone); | ||
| EXPECT_NE(testObjectClone2.handle(), testObjectClone.handle()); | ||
|
|
||
| ModelObject undisturbedGroundTemperatureModelClone = testObjectClone.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedKusudaAchenbach> sgtClone = | ||
| undisturbedGroundTemperatureModelClone.optionalCast<SiteGroundTemperatureUndisturbedKusudaAchenbach>(); | ||
| ASSERT_TRUE(sgtClone); | ||
| EXPECT_EQ(2u, m.getConcreteModelObjects<SiteGroundTemperatureUndisturbedKusudaAchenbach>().size()); | ||
|
|
||
| ModelObject undisturbedGroundTemperatureModelClone2 = testObjectClone2.undisturbedGroundTemperatureModel(); | ||
| boost::optional<SiteGroundTemperatureUndisturbedKusudaAchenbach> sgtClone2 = | ||
| undisturbedGroundTemperatureModelClone2.optionalCast<SiteGroundTemperatureUndisturbedKusudaAchenbach>(); | ||
| ASSERT_TRUE(sgtClone2); | ||
| EXPECT_EQ(1u, m2.getConcreteModelObjects<SiteGroundTemperatureUndisturbedKusudaAchenbach>().size()); | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It this new
childrenmethod necessary? I'm still not really sure how this method gets used downstream.