Created
July 31, 2010 18:42
-
-
Save smly/502477 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <iostream> | |
| #include <fstream> | |
| #include <vector> | |
| #include <sstream> | |
| #include <gtest/gtest.h> | |
| #include "lp.hpp" | |
| #include "testing/utils.hpp" | |
| namespace gmll { | |
| struct TestFiles { | |
| public: | |
| std::string gmllResult, matlabResult, edges, labels; | |
| }; | |
| typedef std::vector<std::pair<float, float> > PredictFunc; | |
| int loadTestFile(PredictFunc& values, const char* filename) | |
| { | |
| std::ifstream ifs(filename); | |
| std::string line; | |
| for (unsigned int i = 0; i < 10; i++) { | |
| std::getline(ifs, line); | |
| const char *s = line.c_str(); | |
| unsigned int pos = 0; | |
| unsigned int len = std::strlen(s); | |
| float a, b; | |
| a = atof(s); | |
| while (pos < len && s[pos] != ',') pos++; | |
| b = atof(s + pos + 1); | |
| values.push_back(std::make_pair(a, b)); | |
| } | |
| ifs.close(); ifs.clear(); | |
| } | |
| int loadResultFile(PredictFunc& values, const char* filename) | |
| { | |
| std::ifstream ifs(filename); | |
| for (unsigned int i = 0; i < 12; i++) { | |
| std::string line; | |
| std::getline(ifs, line); | |
| if (i < 2) continue; | |
| const char *s = line.c_str(); | |
| unsigned int pos = 0; | |
| unsigned int len = std::strlen(s); | |
| float a, b; | |
| while (pos < len && s[pos] != ' ') pos++; | |
| a = atof(s + pos + 1); | |
| pos++; | |
| while (pos < len && s[pos] != ' ') pos++; | |
| b = atof(s + pos + 1); | |
| values.push_back(std::make_pair(a, b)); | |
| } | |
| ifs.close(); | |
| } | |
| class UndirectedEdgesTest : public::testing::Test { | |
| protected: | |
| UndirectedEdgesTest() { | |
| const std::string base = Path::TestSourceDir() + \ | |
| "/../testdata/zhu_harmonic_function/"; | |
| files_.gmllResult = base + "sample_result"; | |
| files_.matlabResult = base + "sample_fu"; | |
| files_.edges = base + "sample_edges_undirected.txt"; | |
| files_.labels = base + "sample_fl"; | |
| } | |
| TestFiles files_; | |
| }; | |
| TEST_F(UndirectedEdgesTest, FileCheck) { | |
| ASSERT_EQ(true, File::Exists(files_.matlabResult)) | |
| << "doesn't exists matlabResult: " << files_.matlabResult; | |
| ASSERT_EQ(true, File::Exists(files_.edges)) | |
| << "doesn't exists edges: " << files_.edges; | |
| ASSERT_EQ(true, File::Exists(files_.labels)) | |
| << "doesn't exists labels" << files_.labels; | |
| } | |
| TEST_F(UndirectedEdgesTest, CompareMatlabImpl) { | |
| Setting s; s.digraph = false; | |
| LP lp(s); | |
| lp.loadFl(files_.labels.c_str()); | |
| lp.loadW(files_.edges.c_str()); | |
| lp.infer(); | |
| lp.saveF(files_.gmllResult.c_str()); | |
| PredictFunc matlabResultFunc, gmllResultFunc; | |
| loadTestFile(matlabResultFunc, files_.matlabResult.c_str()); | |
| loadResultFile(gmllResultFunc, files_.gmllResult.c_str()); | |
| for (unsigned int i = 0; i < gmllResultFunc.size(); i++) { | |
| EXPECT_NEAR(matlabResultFunc[i].first, gmllResultFunc[i].first, 1.0e-5); | |
| EXPECT_NEAR(matlabResultFunc[i].second, gmllResultFunc[i].second, 1.0e-5); | |
| } | |
| } | |
| class DirectedEdgesTest : public ::testing::Test { | |
| protected: | |
| DirectedEdgesTest() { | |
| const std::string base = Path::TestSourceDir() + \ | |
| "/../testdata/zhu_harmonic_function/"; | |
| files_.gmllResult = base + "sample_result"; | |
| files_.matlabResult = base + "sample_fu"; | |
| files_.edges = base + "sample_edges.txt"; | |
| files_.labels = base + "sample_fl"; | |
| } | |
| TestFiles files_; | |
| }; | |
| TEST_F(DirectedEdgesTest, FileCheck) { | |
| ASSERT_EQ(true, File::Exists(files_.matlabResult)) | |
| << "doesn't exists matlabResult: " << files_.matlabResult; | |
| ASSERT_EQ(true, File::Exists(files_.edges)) | |
| << "doesn't exists edges: " << files_.edges; | |
| ASSERT_EQ(true, File::Exists(files_.labels)) | |
| << "doesn't exists labels" << files_.labels; | |
| } | |
| TEST_F(DirectedEdgesTest, CompareMatlabImpl) { | |
| Setting s; s.digraph = true; | |
| LP lp(s); | |
| lp.loadFl(files_.labels.c_str()); | |
| lp.loadW(files_.edges.c_str()); | |
| lp.infer(); | |
| lp.saveF(files_.gmllResult.c_str()); | |
| PredictFunc matlabResultFunc, gmllResultFunc; | |
| loadTestFile(matlabResultFunc, files_.matlabResult.c_str()); | |
| loadResultFile(gmllResultFunc, files_.gmllResult.c_str()); | |
| for (unsigned int i = 0; i < gmllResultFunc.size(); i++) { | |
| EXPECT_NEAR(matlabResultFunc[i].first, gmllResultFunc[i].first, 1.0e-5); | |
| EXPECT_NEAR(matlabResultFunc[i].second, gmllResultFunc[i].second, 1.0e-5); | |
| } | |
| } | |
| } //namespace gmll |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment