diff --git a/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp b/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp index c6b306296c..d7af37bb05 100644 --- a/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp +++ b/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp @@ -244,34 +244,38 @@ std::expected RimSummaryCase_setSummaryVectorVal { auto* summaryCase = self(); auto* fileSummaryCase = dynamic_cast( summaryCase ); - if ( fileSummaryCase ) + if ( !fileSummaryCase ) { - bool rebuildUserInterface = true; + return std::unexpected( QString( "Setting summary values is not supported for summary case type '%1'. " + "Only file-backed summary cases support user-defined vectors." ) + .arg( summaryCase->classKeyword() ) ); + } - if ( auto reader = fileSummaryCase->summaryReader() ) + bool rebuildUserInterface = true; + + if ( auto reader = fileSummaryCase->summaryReader() ) + { + auto allAddr = reader->allResultAddresses(); + for ( const auto& adr : allAddr ) { - auto allAddr = reader->allResultAddresses(); - for ( auto adr : allAddr ) + if ( adr.uiText() == m_addressString().toStdString() ) { - if ( adr.uiText() == m_addressString().toStdString() ) - { - rebuildUserInterface = false; - break; - } + rebuildUserInterface = false; + break; } } + } - auto result = fileSummaryCase->setSummaryData( m_addressString().toStdString(), m_unitString().toStdString(), m_values() ); - if ( !result.has_value() ) - { - return std::unexpected( result.error() ); - } + auto result = fileSummaryCase->setSummaryData( m_addressString().toStdString(), m_unitString().toStdString(), m_values() ); + if ( !result.has_value() ) + { + return std::unexpected( result.error() ); + } - if ( rebuildUserInterface ) - { - fileSummaryCase->buildTreeNodesIfRequired(); - fileSummaryCase->updateConnectedEditors(); - } + if ( rebuildUserInterface ) + { + fileSummaryCase->buildTreeNodesIfRequired(); + fileSummaryCase->updateConnectedEditors(); } return nullptr; diff --git a/ApplicationLibCode/UnitTests/RimMockSummaryCase-Test.cpp b/ApplicationLibCode/UnitTests/RimMockSummaryCase-Test.cpp index 28962ea9fd..ddd26bb4df 100644 --- a/ApplicationLibCode/UnitTests/RimMockSummaryCase-Test.cpp +++ b/ApplicationLibCode/UnitTests/RimMockSummaryCase-Test.cpp @@ -4,6 +4,7 @@ #include "RifEclipseSummaryAddress.h" #include "RigCaseRealizationParameters.h" +#include "RimcSummaryCase.h" //-------------------------------------------------------------------------------------------------- // RimSummaryCase interface tests @@ -33,6 +34,21 @@ TEST( RimMockSummaryCase, SummaryReaderReturnsSelf ) EXPECT_EQ( static_cast( &mockCase ), mockCase.summaryReader() ); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST( RimMockSummaryCase, SetSummaryValuesReturnsErrorForUnsupportedCaseType ) +{ + RimMockSummaryCase mockCase; + RimSummaryCase_setSummaryVectorValues method( &mockCase ); + + auto result = method.execute(); + + ASSERT_FALSE( result.has_value() ); + EXPECT_TRUE( result.error().contains( "not supported" ) ); + EXPECT_TRUE( result.error().contains( "Only file-backed summary cases" ) ); +} + //-------------------------------------------------------------------------------------------------- // RifSummaryReaderInterface tests //--------------------------------------------------------------------------------------------------