]> git.donarmstrong.com Git - flightcrew.git/blob - src/FlightCrew/tests/opf_tests/ReachabilityAnalysis_test.cpp
Imported Upstream version 0.7.2+dfsg
[flightcrew.git] / src / FlightCrew / tests / opf_tests / ReachabilityAnalysis_test.cpp
1 /************************************************************************\r
2 **\r
3 **  Copyright (C) 2010  Strahinja Markovic\r
4 **\r
5 **  This file is part of FlightCrew.\r
6 **\r
7 **  FlightCrew is free software: you can redistribute it and/or modify\r
8 **  it under the terms of the GNU Lesser General Public License as published\r
9 **  by the Free Software Foundation, either version 3 of the License, or\r
10 **  (at your option) any later version.\r
11 **\r
12 **  FlightCrew is distributed in the hope that it will be useful,\r
13 **  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15 **  GNU Lesser General Public License for more details.\r
16 **\r
17 **  You should have received a copy of the GNU Lesser General Public License\r
18 **  along with FlightCrew.  If not, see <http://www.gnu.org/licenses/>.\r
19 **\r
20 *************************************************************************/\r
21 \r
22 #include <stdafx_tests.h>\r
23 #include "Validators/Opf/ReachabilityAnalysis.h"\r
24 #include "Result.h"\r
25 \r
26 using namespace FlightCrew;\r
27 \r
28 TEST( ReachabilityAnalysisTest, ReachableDocsNotInSpine )\r
29 {\r
30     ReachabilityAnalysis validator;\r
31     std::vector<Result> results = validator.ValidateFile(\r
32             "test_data/opf_tests/ReachabilityAnalysis_ReachableDocsNotInSpine/content.opf" );\r
33 \r
34     // Needed for checking filepaths,\r
35     // ReachabilityAnalysis uses hashes\r
36     std::sort( results.begin(), results.end() );\r
37             \r
38     ASSERT_EQ( results.size(), 3U );\r
39     EXPECT_EQ( results[ 0 ].GetResultId(), ERROR_OPF_REACHABLE_OPS_DOC_NOT_IN_SPINE );\r
40     EXPECT_TRUE( boost::contains( results[ 0 ].GetFilepath(), "test2.xhtml" ) );\r
41 \r
42     EXPECT_EQ( results[ 1 ].GetResultId(), ERROR_OPF_REACHABLE_OPS_DOC_NOT_IN_SPINE );\r
43     EXPECT_TRUE( boost::contains( results[ 1 ].GetFilepath(), "test3.xhtml" ) );\r
44 \r
45     EXPECT_EQ( results[ 2 ].GetResultId(), ERROR_OPF_REACHABLE_OPS_DOC_NOT_IN_SPINE );\r
46     EXPECT_TRUE( boost::contains( results[ 2 ].GetFilepath(), "test4.xhtml" ) );\r
47 }\r
48 \r
49 TEST( ReachabilityAnalysisTest, ManifestResourceNotReachable )\r
50 {\r
51     ReachabilityAnalysis validator;\r
52     std::vector<Result> results = validator.ValidateFile(\r
53             "test_data/opf_tests/ReachabilityAnalysis_ManifestResourceNotReachable/content.opf" );\r
54 \r
55     // Needed for checking filepaths,\r
56     // ReachabilityAnalysis uses hashes\r
57     std::sort( results.begin(), results.end() );\r
58             \r
59     ASSERT_EQ( results.size(), 2U );\r
60     EXPECT_EQ( results[ 0 ].GetResultId(), WARNING_OPF_RESOURCE_IN_MANIFEST_NOT_REACHABLE );\r
61     EXPECT_TRUE( boost::contains( results[ 0 ].GetFilepath(), ".xhtml" ) );\r
62 \r
63     EXPECT_EQ( results[ 1 ].GetResultId(), WARNING_OPF_RESOURCE_IN_MANIFEST_NOT_REACHABLE );\r
64     EXPECT_TRUE( boost::contains( results[ 1 ].GetFilepath(), "doesNotExist.jpg" ) );\r
65 }\r
66 \r
67 TEST( ReachabilityAnalysisTest, ReachableResourceNotInManifest )\r
68 {\r
69     ReachabilityAnalysis validator;\r
70     std::vector<Result> results = validator.ValidateFile(\r
71             "test_data/opf_tests/ReachabilityAnalysis_ReachableResourceNotInManifest/content.opf" );\r
72 \r
73     // Needed for checking filepaths,\r
74     // ReachabilityAnalysis uses hashes\r
75     std::sort( results.begin(), results.end() );\r
76             \r
77     ASSERT_EQ( results.size(), 4U );\r
78     EXPECT_EQ( results[ 0 ].GetResultId(), ERROR_OPF_REACHABLE_RESOURCE_NOT_IN_MANIFEST );\r
79     EXPECT_TRUE( boost::contains( results[ 0 ].GetFilepath(), "notInManifest.css" ) );\r
80 \r
81     EXPECT_EQ( results[ 1 ].GetResultId(), ERROR_OPF_REACHABLE_RESOURCE_NOT_IN_MANIFEST );\r
82     EXPECT_TRUE( boost::contains( results[ 1 ].GetFilepath(), "notInManifest.gif" ) );\r
83 \r
84     EXPECT_EQ( results[ 2 ].GetResultId(), ERROR_OPF_REACHABLE_OPS_DOC_NOT_IN_SPINE );\r
85     EXPECT_TRUE( boost::contains( results[ 2 ].GetFilepath(), "test4.xhtml" ) );\r
86 \r
87     EXPECT_EQ( results[ 3 ].GetResultId(), ERROR_OPF_REACHABLE_RESOURCE_NOT_IN_MANIFEST );\r
88     EXPECT_TRUE( boost::contains( results[ 3 ].GetFilepath(), "test4.xhtml" ) );\r
89 }\r
90 \r
91 \r
92 TEST( ReachabilityAnalysisTest, AllOk )\r
93 {\r
94     ReachabilityAnalysis validator;\r
95     std::vector<Result> results = validator.ValidateFile(\r
96             "test_data/opf_tests/ReachabilityAnalysis_AllOk/content.opf" );\r
97     \r
98     EXPECT_EQ( results.size(), 0U );\r
99 }\r
100 \r