From 87adc57d0f92521fd90f98cf61ffc055e19088a1 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 30 Jun 2026 19:36:20 +0000
Subject: [PATCH] Fix COM teardown guard, dedup RCM matrix and TableFormula
extender
---
.../OSPSuite.SimModelNative.Tests.vcxproj | 3 +++
.../src/RcmSpecs.cpp | 23 +------------------
.../src/TableFormulaSpecs.cpp | 12 ++--------
.../src/TableFormulaTestExtender.h | 20 ++++++++++++++++
.../src/TableFormulaWithOffsetSpecs.cpp | 11 ++-------
.../src/TableFormulaWithXArgumentSpecs.cpp | 11 ++-------
.../src/TestEnvironment.cpp | 16 +++++++++++--
7 files changed, 44 insertions(+), 52 deletions(-)
create mode 100644 tests/OSPSuite.SimModelNative.Tests/src/TableFormulaTestExtender.h
diff --git a/tests/OSPSuite.SimModelNative.Tests/OSPSuite.SimModelNative.Tests.vcxproj b/tests/OSPSuite.SimModelNative.Tests/OSPSuite.SimModelNative.Tests.vcxproj
index 0f1d73b..15d3ae4 100644
--- a/tests/OSPSuite.SimModelNative.Tests/OSPSuite.SimModelNative.Tests.vcxproj
+++ b/tests/OSPSuite.SimModelNative.Tests/OSPSuite.SimModelNative.Tests.vcxproj
@@ -128,6 +128,9 @@
+
+
+
diff --git a/tests/OSPSuite.SimModelNative.Tests/src/RcmSpecs.cpp b/tests/OSPSuite.SimModelNative.Tests/src/RcmSpecs.cpp
index 1f1cfbe..ed55736 100644
--- a/tests/OSPSuite.SimModelNative.Tests/src/RcmSpecs.cpp
+++ b/tests/OSPSuite.SimModelNative.Tests/src/RcmSpecs.cpp
@@ -103,28 +103,7 @@ TEST_F(when_testing_rcm, should_return_valid_permutation_for_line_graph)
TEST_F(when_testing_rcm, should_return_valid_permutation_for_ten_node_example)
{
// The 10x10 example from the header documentation
- auto matrix = createMatrix(10);
-
- // Row 0: connected to 3, 5
- matrix[0][3] = true; matrix[0][5] = true;
- // Row 1: connected to 2, 4, 6, 9
- matrix[1][2] = true; matrix[1][4] = true; matrix[1][6] = true; matrix[1][9] = true;
- // Row 2: connected to 1, 3, 4
- matrix[2][1] = true; matrix[2][3] = true; matrix[2][4] = true;
- // Row 3: connected to 0, 2, 5, 8
- matrix[3][0] = true; matrix[3][2] = true; matrix[3][5] = true; matrix[3][8] = true;
- // Row 4: connected to 1, 2, 6
- matrix[4][1] = true; matrix[4][2] = true; matrix[4][6] = true;
- // Row 5: connected to 0, 3, 6, 7
- matrix[5][0] = true; matrix[5][3] = true; matrix[5][6] = true; matrix[5][7] = true;
- // Row 6: connected to 1, 4, 5, 7
- matrix[6][1] = true; matrix[6][4] = true; matrix[6][5] = true; matrix[6][7] = true;
- // Row 7: connected to 5, 6
- matrix[7][5] = true; matrix[7][6] = true;
- // Row 8: connected to 3
- matrix[8][3] = true;
- // Row 9: connected to 1
- matrix[9][1] = true;
+ auto matrix = createTenNodeMatrix();
auto perm = rcm.GenRcm(matrix);
verifyPermutation(perm, 10);
diff --git a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaSpecs.cpp b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaSpecs.cpp
index 6d3699c..ab924af 100644
--- a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaSpecs.cpp
+++ b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaSpecs.cpp
@@ -3,24 +3,16 @@
#include "SimModel/SimModelTypeDefs.h"
#include "SimModel/GlobalConstants.h"
#include "SimModel/TObjectVector.h"
+#include "TableFormulaTestExtender.h"
#include
#include
using namespace SimModelNative;
-// Provide access to protected members of TableFormula via public inheritance.
-// (Originally implemented in the C++/CLI helper TableFormulaSpecsHelper.h.)
-class TableFormulaExtender : public TableFormula
-{
-public:
- TObjectVector& ValuePoints() { return _valuePoints; }
- void CallCacheValues() { CacheValues(); }
-};
-
class when_creating_for_given_table : public ::testing::Test
{
protected:
- TableFormulaExtender _formula;
+ TableFormulaTestExtender _formula;
void SetUp() override
{
diff --git a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaTestExtender.h b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaTestExtender.h
new file mode 100644
index 0000000..cbe6611
--- /dev/null
+++ b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaTestExtender.h
@@ -0,0 +1,20 @@
+#ifndef _TableFormulaTestExtender_H_
+#define _TableFormulaTestExtender_H_
+
+#include "SimModel/TableFormula.h"
+#include "SimModel/TObjectVector.h"
+
+namespace SimModelNative
+{
+ // Provide access to protected members of TableFormula via public inheritance.
+ // (Originally implemented in the C++/CLI helper TableFormulaSpecsHelper.h.)
+ // Shared across the TableFormula spec files to avoid duplicating the wrapper.
+ class TableFormulaTestExtender : public TableFormula
+ {
+ public:
+ TObjectVector& ValuePoints() { return _valuePoints; }
+ void CallCacheValues() { CacheValues(); }
+ };
+}
+
+#endif //_TableFormulaTestExtender_H_
diff --git a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithOffsetSpecs.cpp b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithOffsetSpecs.cpp
index 64681a0..87daa20 100644
--- a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithOffsetSpecs.cpp
+++ b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithOffsetSpecs.cpp
@@ -6,19 +6,12 @@
#include "SimModel/SimModelTypeDefs.h"
#include "SimModel/GlobalConstants.h"
#include "SimModel/TObjectVector.h"
+#include "TableFormulaTestExtender.h"
#include
#include
using namespace SimModelNative;
-// Provide access to protected members of TableFormula via public inheritance.
-class TableFormulaForOffsetExtender : public TableFormula
-{
-public:
- TObjectVector& ValuePoints() { return _valuePoints; }
- void CallCacheValues() { CacheValues(); }
-};
-
// Provide access to protected members of TableFormulaWithOffset via public inheritance.
class TableFormulaWithOffsetExtender : public TableFormulaWithOffset
{
@@ -34,7 +27,7 @@ class when_creating_for_given_table_with_offset : public ::testing::Test
static constexpr double _offset = 300.0;
TableFormulaWithOffsetExtender _formula;
- TableFormulaForOffsetExtender _tableFormula;
+ TableFormulaTestExtender _tableFormula;
Parameter _offsetObject;
Parameter _tableObject;
diff --git a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithXArgumentSpecs.cpp b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithXArgumentSpecs.cpp
index 6aab944..8b251da 100644
--- a/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithXArgumentSpecs.cpp
+++ b/tests/OSPSuite.SimModelNative.Tests/src/TableFormulaWithXArgumentSpecs.cpp
@@ -6,19 +6,12 @@
#include "SimModel/SimModelTypeDefs.h"
#include "SimModel/GlobalConstants.h"
#include "SimModel/TObjectVector.h"
+#include "TableFormulaTestExtender.h"
#include
#include
using namespace SimModelNative;
-// Provide access to protected members of TableFormula via public inheritance.
-class TableFormulaForXArgumentExtender : public TableFormula
-{
-public:
- TObjectVector& ValuePoints() { return _valuePoints; }
- void CallCacheValues() { CacheValues(); }
-};
-
// Provide access to protected members of TableFormulaWithXArgument via public inheritance.
class TableFormulaWithXArgumentExtender : public TableFormulaWithXArgument
{
@@ -33,7 +26,7 @@ class when_creating_for_given_table_with_non_time_dependent_xargument : public :
{
protected:
TableFormulaWithXArgumentExtender _formula;
- TableFormulaForXArgumentExtender _tableFormula;
+ TableFormulaTestExtender _tableFormula;
Parameter _xArgumentObject;
Parameter _tableObject;
diff --git a/tests/OSPSuite.SimModelNative.Tests/src/TestEnvironment.cpp b/tests/OSPSuite.SimModelNative.Tests/src/TestEnvironment.cpp
index 6a0dc53..2778a59 100644
--- a/tests/OSPSuite.SimModelNative.Tests/src/TestEnvironment.cpp
+++ b/tests/OSPSuite.SimModelNative.Tests/src/TestEnvironment.cpp
@@ -15,8 +15,20 @@ namespace
class ComEnvironment : public ::testing::Environment
{
public:
- void SetUp() override { CoInitialize(NULL); }
- void TearDown() override { CoUninitialize(); }
+ void SetUp() override { _comInitialized = SUCCEEDED(CoInitialize(NULL)); }
+ void TearDown() override
+ {
+ // Only balance a successful CoInitialize. A failed call (e.g.
+ // RPC_E_CHANGED_MODE) must not trigger CoUninitialize.
+ if (_comInitialized)
+ {
+ CoUninitialize();
+ _comInitialized = false;
+ }
+ }
+
+ private:
+ bool _comInitialized = false;
};
const ::testing::Environment* const _comEnvironment =