5 #include "gtest/gtest.h"
6 #include <gromacs/trajectoryanalysis.h>
7 // #include <gromacs/trajectoryanalysis/topologyinformation.h>
8 #include "/home/titov_ai/Develop/gromacs-original/src/gromacs/trajectoryanalysis/topologyinformation.h"
13 TEST( corrTests, corrTests_trajectoryPartition )
15 correlationType testCorrs;
16 std::vector< RVec > testReference;
17 testReference.resize(0);
18 std::vector< std::vector < std::vector < unsigned int > > > testSels;
20 std::vector< int > testIndex;
22 RVec a; a[0] = 1; a[1] = 2; a[2] = 3;
25 testSels[0].resize(1);
26 testSels[0][0].resize(0);
27 for (unsigned int i = 0; i < 100; i++) {
28 testReference.push_back(a);
29 testSels[0][0].push_back(i);
30 testIndex.push_back(i);
32 testCorrs.reference = testReference;
33 testCorrs.selections = testSels;
34 testCorrs.index = testIndex;
36 testCorrs.trajectoryPartition();
37 // по аналогии проверить различные варианты дробления молекулы
40 TEST( corrTests, corrTests_setDefaults )
42 std::vector< std::string > testResNms;
44 std::vector< RVec > testReference;
45 testReference.resize(0);
46 std::vector< std::vector < std::vector < unsigned int > > > testSels;
48 std::vector< int > testIndex;
51 int testTau_jump = 100;
52 int testWindow = 1000;
54 float testCrl_border = 0.5;
55 float testEff_rad = 1.5;
56 std::string testOutPutName = "testString";
57 RVec a; a[0] = 1; a[1] = 2; a[2] = 3;
58 correlationType testCorrs;
62 testSels[0].resize(1);
63 testSels[0][0].resize(0);
64 for (unsigned int i = 0; i < 100; i++) {
65 testReference.push_back(a);
66 testResNms.push_back(std::to_string(i));
67 testSels[0][0].push_back(i);
68 testIndex.push_back(i);
71 testCorrs.setDefaults(testReference, testWindow, testTau, testTau_jump, testCrl_border, testEff_rad, 0, testOutPutName, testIndex, testSels, testResNms);
73 ASSERT_EQ(testCorrs.window, testWindow);
74 ASSERT_EQ(testCorrs.tau, testTau);
75 ASSERT_EQ(testCorrs.tauStep, testTau_jump);
76 ASSERT_EQ(testCorrs.crlUpBorder, testCrl_border);
77 ASSERT_EQ(testCorrs.effRadius, testEff_rad);
78 ASSERT_EQ(testCorrs.mode, 0);
79 ASSERT_EQ(testCorrs.outputName, testOutPutName);
80 for (unsigned int i = 0; i < 100; i++) {
81 ASSERT_EQ(testCorrs.reference[i][0], testReference[i][0]);
82 ASSERT_EQ(testCorrs.reference[i][1], testReference[i][1]);
83 ASSERT_EQ(testCorrs.reference[i][2], testReference[i][2]);
84 ASSERT_EQ(testCorrs.index[i], testIndex[i]);
85 ASSERT_EQ(testCorrs.selections[0][0][i], testSels[0][0][i]);
86 ASSERT_EQ(testCorrs.resNames[i], testResNms[i]);
90 TEST( corrTests, corrTests_correlationEval )
92 std::vector< std::vector< RVec > > testTraj;
95 for (unsigned int i0 = 0; i0 < 1000; i0++) {
96 testTraj.resize(testTraj.size() + 1);
97 for (unsigned int i1 = 0; i1 < 10; i1++) {
98 testA[0] = std::sin(i0 * 2 * M_PI / 1000);
99 testA[1] = std::sin(i0 * 2 * M_PI / 1000);
100 testA[2] = std::sin(i0 * 2 * M_PI / 1000);
101 testTraj.back().push_back(testA);
104 // вычисление корреляционных матриц на основе траектории
107 TEST( corrTests, corrTests_graphCalculations )
109 std::vector< std::vector< std::vector< double > > > matrixes;
110 std::vector< std::vector< std::pair< double, int > > > graph;
111 std::vector< std::vector< unsigned int > > subGraphPoints;
112 std::vector< std::vector< std::pair< unsigned int, unsigned int > > > subGraphRbr;
113 std::vector< int > index;
114 std::vector< RVec > reference;
118 // создание графа на основе посчитанных матриц
121 TEST( corrTests, corrTests_graphBackBoneEvaluation )
123 std::vector< int > index;
124 std::vector< std::vector< std::pair< double, int > > > graph;
125 std::vector< std::vector< unsigned int > > subGraphPoints;
126 std::vector< std::vector< std::pair< unsigned int, unsigned int > > > subGraphRbr;
127 std::vector< std::vector< std::vector< std::pair< unsigned int, unsigned int > > > > subGraphRouts;
132 // выделение остовного(?) графа на базе полного графа
135 TEST( corrTests, corrTests_update )
139 // основная работа программы целиком
142 int main(int argc, char *argv[]) {
143 ::testing::InitGoogleTest( &argc, argv );
144 return RUN_ALL_TESTS();