// ------------------------------------------------------ // TestHCH // ------------------------------------------------------ void TestHCH() { CMatrixFloat H,C,RES; cout << "reading H.txt..."; H.loadFromTextFile(myDataDir+string("H.txt")); cout << "ok"<<endl; cout << "reading C.txt..."; C.loadFromTextFile(myDataDir+string("C.txt")); cout << "ok"<<endl; // RES = H * C * ~H H.multiply_HCHt(C, RES); cout << "Saving RES.txt ..."; RES.saveToTextFile("RES.txt"); cout << "ok"<<endl; // The same for a column vector: H.loadFromTextFile(myDataDir+string("H_col.txt")); cout << "H*C*(~H) = " << H.multiply_HCHt_scalar(C) << endl; cout << "Should be= 31.434 "<< endl; // The same for a row vector: H.loadFromTextFile(myDataDir+string("H_row.txt")); cout << "Loaded H: " << endl << H; cout << "H*C*(~H) = " << H.multiply_HCHt_scalar(C) << endl; cout << "Should be= 31.434"<< endl; CMatrixFixedNumeric<double,1,5> Hfix; Hfix.loadFromTextFile(myDataDir+string("H_row.txt")); cout << "Again, loaded as a fixed matrix: " << endl << Hfix; }
TEST(Matrices,loadFromTextFile) { { const std::string s1 = "1 2 3\n" "4 5 6"; std::stringstream s(s1); CMatrixDouble M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &e) { std::cerr << e.what() << std::endl; } EXPECT_TRUE(retval) << "string:\n" << s1 << endl; EXPECT_EQ(M.rows(),2); EXPECT_EQ(M.cols(),3); } { const std::string s1 = "1 \t 2\n" " 4 \t\t 1 "; std::stringstream s(s1); CMatrixDouble M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &e) { std::cerr << e.what() << std::endl; } EXPECT_TRUE(retval) << "string:\n" << s1 << endl; EXPECT_EQ(M.rows(),2); EXPECT_EQ(M.cols(),2); } { const std::string s1 = "1 2"; std::stringstream s(s1); CMatrixDouble M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &e) { std::cerr << e.what() << std::endl; } EXPECT_TRUE(retval) << "string:\n" << s1 << endl; EXPECT_EQ(M.rows(),1); EXPECT_EQ(M.cols(),2); } { const std::string s1 = "1 2 3\n" "4 5 6\n"; std::stringstream s(s1); CMatrixFixedNumeric<double,2,3> M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &e) { std::cerr << e.what() << std::endl; } EXPECT_TRUE(retval) << "string:\n" << s1 << endl; EXPECT_EQ(M.rows(),2); EXPECT_EQ(M.cols(),3); } { const std::string s1 = "1 2 3\n" "4 5\n"; std::stringstream s(s1); CMatrixFixedNumeric<double,2,3> M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &) { } EXPECT_FALSE(retval) << "string:\n" << s1 << endl; } { const std::string s1 = "1 2 3\n" "4 5\n"; std::stringstream s(s1); CMatrixDouble M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &) { } EXPECT_FALSE(retval) << "string:\n" << s1 << endl; } { const std::string s1 = " \n"; std::stringstream s(s1); CMatrixFixedNumeric<double,2,3> M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &) { } EXPECT_FALSE(retval) << "string:\n" << s1 << endl; } { const std::string s1 = "1 2 3\n" "1 2 3\n" "1 2 3"; std::stringstream s(s1); CMatrixFixedNumeric<double,2,3> M; bool retval = false; try { M.loadFromTextFile(s); retval=true; } catch(std::exception &) { } EXPECT_FALSE(retval) << "string:\n" << s1 << endl; } }