Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/gnash
[gnash.git] / testsuite / libbase.all / TCXXRc.cpp
blob87005f4206bff51857fd0e197703e57e828481d7
1 //
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
3 // Foundation, Inc
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 //
20 #ifdef HAVE_CONFIG_H
21 #include "gnashconfig.h"
22 #endif
24 #include "log.h"
25 #include "rc.h"
27 #ifdef HAVE_STDARG_H
28 #include <cstdarg>
29 #endif
31 #include <sys/stat.h>
32 #ifdef HAVE_UNISTD_H
33 #include "GnashSystemIOHeaders.h"
34 #endif
36 #include <regex.h>
37 #include <cstdio>
38 #include <cerrno>
39 #include <iostream>
40 #include <fstream>
41 #include <string>
43 #ifdef HAVE_DEJAGNU_H
44 #include "dejagnu.h"
45 #else
46 #include "check.h"
47 #endif
49 using namespace std;
50 using namespace gnash;
52 bool gofast = false; // FIXME: this flag gets set based on
53 // an XML message written using
54 // SendCommand(""). This way a movie
55 // can optimize it's own performance
56 // when needed,
57 bool nodelay = false; // FIXME: this flag gets set based on
58 // an XML message written using
59 // SendCommand(""). This way a movie
60 // can optimize it's own performance
61 // when needed,
63 TestState runtest;
65 int
66 main (int /*argc*/, char** /*argv*/) {
67 RcInitFile& rc = RcInitFile::getDefaultInstance();
69 gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
70 dbglogfile.setVerbosity();
72 // Default rendering quality is driven by SWF
73 if (rc.qualityLevel() == -1) {
74 runtest.pass ("rc.qualityLevel() == -1");
75 } else {
76 runtest.fail ("rc.qualityLevel() != -1");
79 // Parse the test config file
80 if (rc.parseFile("gnashrc")) {
81 runtest.pass ("rc.parseFile()");
82 } else {
83 runtest.fail ("rc.parseFile()");
86 // By default, use a splash screen
87 if (rc.useSplashScreen()) {
88 runtest.pass ("useSplashScreen default");
89 } else {
90 runtest.fail ("useSplashScreen default");
93 // By default, limit access to the local host only
94 if (rc.useLocalDomain()) {
95 runtest.pass ("useLocalDomain default");
96 } else {
97 runtest.fail ("useLocalDomain default");
99 if (rc.useLocalHost()) {
100 runtest.pass ("useLocalHost default");
101 } else {
102 runtest.fail ("useLocalHost default");
105 if (rc.useActionDump()) {
106 runtest.fail ("useActionDump");
107 } else {
108 runtest.pass ("useActionDump");
111 if (rc.useParserDump()) {
112 runtest.fail ("useParserDump");
113 } else {
114 runtest.pass ("useParserDump");
117 if (rc.useWriteLog()) {
118 runtest.pass ("useWriteLog");
119 } else {
120 runtest.fail ("useWriteLog");
123 if (rc.useDebugger()) {
124 runtest.fail ("useDebugger");
125 } else {
126 runtest.pass ("useDebugger");
129 if (rc.getTimerDelay() == 50) {
130 runtest.pass ("getTimerDelay");
131 } else {
132 runtest.fail ("getTimerDelay");
135 if (rc.verbosityLevel() == 1) {
136 runtest.pass ("verbosityLevel");
137 } else {
138 runtest.fail ("verbosityLevel");
141 if (rc.useSound() == 0) {
142 runtest.pass ("useSound");
143 } else {
144 runtest.fail ("useSound");
147 if (rc.usePluginSound() == 0) {
148 runtest.pass ("usePluginSound");
149 } else {
150 runtest.fail ("usePluginSound");
153 if (rc.enableExtensions() == 1) {
154 runtest.pass ("enableExtensions");
155 } else {
156 runtest.fail ("enableExtensions");
159 if (rc.getFlashVersionString() == "GSH 9,0,99,0") {
160 runtest.pass ("getFlashVersionString");
161 } else {
162 runtest.fail ("getFlashVersionString");
165 if (rc.getDebugLog() == "/tmp/gnash-dbg.log") {
166 runtest.pass ("getDebugLog");
167 } else {
168 runtest.fail ("getDebugLog");
171 if (rc.startStopped() == 1) {
172 runtest.pass ("startStopped");
173 } else {
174 runtest.fail ("startStopped");
177 if (rc.getStreamsTimeout() == 1.5) {
178 runtest.pass ("streamsTimeout");
179 } else {
180 runtest.fail ("streamsTimeout");
183 if (rc.insecureSSL()) {
184 runtest.pass ("insecureSSL");
185 } else {
186 runtest.fail ("insecureSSL");
189 if (rc.getSOLSafeDir().size() > 0) {
190 runtest.pass ("getSOLSafeDir");
191 } else {
192 runtest.fail ("getSOLSafeDir");
195 // Parsed gnashrc sets qualityLevel to 0 (low)
196 if (rc.qualityLevel() == 0) {
197 runtest.pass ("rc.qualityLevel() == 0");
198 } else {
199 runtest.fail ("rc.qualityLevel() != 0");
202 std::vector<std::string> whitelist = rc.getWhiteList();
203 if (whitelist.size()) {
204 if ((whitelist[0] == "www.doonesbury.com")
205 && (whitelist[1] == "www.cnn.com")
206 && (whitelist[2] == "www.9news.com")) {
207 runtest.pass ("rc.getWhiteList()");
208 } else {
209 runtest.fail ("rc.getWhiteList()");
211 runtest.pass ("rc.getWhiteList() has elements");
212 } else {
213 runtest.fail ("rc.getWhiteList() doesn't have elements");
216 if (rc.getLCShmKey() == 0xdd3adabd) {
217 runtest.pass ("rc.getLCShmKey() == 0xabcd1234");
218 } else {
219 runtest.fail ("rc.getLCShmKey() != 0xabcd1234");
222 if (rc.getRootCert() == "testrootcert.pem") {
223 runtest.pass ("rc.getRootCert() == testrootcert.pem");
224 } else {
225 runtest.fail ("rc.getRootCert() != testrootcert.pem");
228 if (rc.getCertFile() == "testclient.pem") {
229 runtest.pass ("rc.getCertFile() == testclient.pem");
230 } else {
231 runtest.fail ("rc.getCertFile() != testclient.pem");
234 if (rc.getCertDir() == "/test/etc/pki/tls/") {
235 runtest.pass ("rc.getCertDir() == /test/etc/pki/tls/");
236 } else {
237 runtest.fail ("rc.getCertDir() != /test/etc/pki/tls/");
240 std::vector<std::string> blacklist = rc.getBlackList();
241 if (blacklist.size()) {
242 if ((blacklist[0] == "www.doubleclick.com")
243 && (blacklist[1] == "www.ebay.com")) {
244 runtest.pass ("rc.getBlackList()");
245 } else {
246 runtest.fail ("rc.getBlackList()");
248 runtest.pass ("rc.getBlackList() has elements");
249 } else {
250 runtest.fail ("rc.getBlackList() doesn't have elements");
253 const std::vector<std::string>& localSandbox = rc.getLocalSandboxPath();
254 if (localSandbox.size() != 1) {
255 runtest.fail ("rc.getLocalSandboxPath() doesn't have 1 element after set");
256 } else {
257 if ( localSandbox[0] == "/tmp/p1" )
259 runtest.pass ("set localSandbox");
261 else
263 runtest.fail ("rc.getLocalSandboxPath() doesn't have the correct first element after set");
267 if (rc.getURLOpenerFormat() == "lynx %u") {
268 runtest.pass ("getURLOpenerFormat");
269 } else {
270 runtest.fail ("getURLOpenerFormat");
273 if (rc.getSOLSafeDir() == "/tmp/SharedObjects") {
274 runtest.pass ("getSOLSafeDir");
275 } else {
276 runtest.fail ("getSOLSafeDir");
279 if (rc.getSOLReadOnly() == true) {
280 runtest.pass ("getSOLReadOnly");
281 } else {
282 runtest.fail ("getSOLReadOnly");
285 if (rc.ignoreShowMenu() == false) {
286 runtest.pass ("ignoreShowMenu");
287 } else {
288 runtest.fail ("ignoreShowMenu");
291 if ( rc.getRenderer().empty() ) {
292 runtest.pass ("getRenderer gives empty string");
293 } else {
294 runtest.fail ("getRenderer gives " + rc.getRenderer() );
297 if ( rc.getMediaHandler().empty() ) {
298 runtest.pass ("getMediaHandler gives empty string");
299 } else {
300 runtest.fail ("getMediaHandler gives " + rc.getMediaHandler() );
303 // Parse a second file
304 if (rc.parseFile("gnashrc-local")) {
306 // Test whether blacklist in gnashrc-local is appended
307 std::vector<std::string> blacklist = rc.getBlackList();
308 if (blacklist.size()) {
309 if ((blacklist[2] == "www.gnashdev.org")
310 && (blacklist[3] == "www.wikipedia.de")) {
311 runtest.pass ("rc.getBlackList(): append");
312 } else {
313 runtest.fail ("rc.getBlackList(): append");
315 runtest.pass ("rc.getBlackList(): has appended elements");
316 } else {
317 runtest.fail ("rc.getBlackList(): doesn't appended elements");
320 // Test local override of previous whitelist
321 std::vector<std::string> whitelist = rc.getWhiteList();
322 if (whitelist.size()) {
323 runtest.fail ("rc.getWhiteList(): local override failed");
324 } else {
325 runtest.pass ("rc.getWhiteList(): local override succeeded");
328 // Test local override of previous local sandbox
329 const std::vector<std::string>& localSandbox = rc.getLocalSandboxPath();
330 if (localSandbox.empty()) {
331 runtest.fail ("rc.getLocalSandboxPath() doesn't have elements after append");
332 } else {
333 if ( localSandbox.back() == "/tmp/gnash" )
335 runtest.pass ("append localSandbox");
337 else
339 runtest.fail ("rc.getLocalSandboxPath() doesn't have the correct last element after append");
343 if ( rc.getRenderer() == std::string("fakeRenderer") ) {
344 runtest.pass ("getRenderer gives " + rc.getRenderer() );
345 } else {
346 runtest.fail ("getRenderer gives " + rc.getRenderer() );
349 if ( rc.getMediaHandler() == std::string("fakeMediaHandler") ) {
350 runtest.pass ("getMediaHandler gives " + rc.getMediaHandler() );
351 } else {
352 runtest.fail ("getMediaHandler gives " + rc.getMediaHandler() );