diff --git a/src/shogun/converter/ica/FastICA.cpp b/src/shogun/converter/ica/FastICA.cpp index 21614347ec1..acb201c7fde 100644 --- a/src/shogun/converter/ica/FastICA.cpp +++ b/src/shogun/converter/ica/FastICA.cpp @@ -76,6 +76,7 @@ CFeatures* CFastICA::apply(CFeatures* features) SG_REF(features); SGMatrix X = ((CDenseFeatures*)features)->get_feature_matrix(); + REQUIRE(X.data(), "Features have not been provided.\n"); int n = X.num_rows; int p = X.num_cols; diff --git a/tests/unit/converter/ica/FastICA_unittest.cc b/tests/unit/converter/ica/FastICA_unittest.cc index 2c64cb9b061..3b2b1f1580d 100644 --- a/tests/unit/converter/ica/FastICA_unittest.cc +++ b/tests/unit/converter/ica/FastICA_unittest.cc @@ -61,3 +61,11 @@ TEST(CFastICA, blind_source_separation) SG_UNREF(signals); } +TEST(CFastICA, with_empty_feature) +{ + CDenseFeatures* empty_feat = new CDenseFeatures(); + CFastICA* ica = new CFastICA(); + EXPECT_THROW(ica->apply(empty_feat), ShogunException); + SG_UNREF(ica); + SG_UNREF(empty_feat); +}