2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
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.
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.
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
21 #include "gnashconfig.h"
33 #include "GnashSystemIOHeaders.h"
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
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
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");
76 runtest
.fail ("rc.qualityLevel() != -1");
79 // Parse the test config file
80 if (rc
.parseFile("gnashrc")) {
81 runtest
.pass ("rc.parseFile()");
83 runtest
.fail ("rc.parseFile()");
86 // By default, use a splash screen
87 if (rc
.useSplashScreen()) {
88 runtest
.pass ("useSplashScreen default");
90 runtest
.fail ("useSplashScreen default");
93 // By default, limit access to the local host only
94 if (rc
.useLocalDomain()) {
95 runtest
.pass ("useLocalDomain default");
97 runtest
.fail ("useLocalDomain default");
99 if (rc
.useLocalHost()) {
100 runtest
.pass ("useLocalHost default");
102 runtest
.fail ("useLocalHost default");
105 if (rc
.useActionDump()) {
106 runtest
.fail ("useActionDump");
108 runtest
.pass ("useActionDump");
111 if (rc
.useParserDump()) {
112 runtest
.fail ("useParserDump");
114 runtest
.pass ("useParserDump");
117 if (rc
.useWriteLog()) {
118 runtest
.pass ("useWriteLog");
120 runtest
.fail ("useWriteLog");
123 if (rc
.useDebugger()) {
124 runtest
.fail ("useDebugger");
126 runtest
.pass ("useDebugger");
129 if (rc
.getTimerDelay() == 50) {
130 runtest
.pass ("getTimerDelay");
132 runtest
.fail ("getTimerDelay");
135 if (rc
.verbosityLevel() == 1) {
136 runtest
.pass ("verbosityLevel");
138 runtest
.fail ("verbosityLevel");
141 if (rc
.useSound() == 0) {
142 runtest
.pass ("useSound");
144 runtest
.fail ("useSound");
147 if (rc
.usePluginSound() == 0) {
148 runtest
.pass ("usePluginSound");
150 runtest
.fail ("usePluginSound");
153 if (rc
.enableExtensions() == 1) {
154 runtest
.pass ("enableExtensions");
156 runtest
.fail ("enableExtensions");
159 if (rc
.getFlashVersionString() == "GSH 9,0,99,0") {
160 runtest
.pass ("getFlashVersionString");
162 runtest
.fail ("getFlashVersionString");
165 if (rc
.getDebugLog() == "/tmp/gnash-dbg.log") {
166 runtest
.pass ("getDebugLog");
168 runtest
.fail ("getDebugLog");
171 if (rc
.startStopped() == 1) {
172 runtest
.pass ("startStopped");
174 runtest
.fail ("startStopped");
177 if (rc
.getStreamsTimeout() == 1.5) {
178 runtest
.pass ("streamsTimeout");
180 runtest
.fail ("streamsTimeout");
183 if (rc
.insecureSSL()) {
184 runtest
.pass ("insecureSSL");
186 runtest
.fail ("insecureSSL");
189 if (rc
.getSOLSafeDir().size() > 0) {
190 runtest
.pass ("getSOLSafeDir");
192 runtest
.fail ("getSOLSafeDir");
195 // Parsed gnashrc sets qualityLevel to 0 (low)
196 if (rc
.qualityLevel() == 0) {
197 runtest
.pass ("rc.qualityLevel() == 0");
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()");
209 runtest
.fail ("rc.getWhiteList()");
211 runtest
.pass ("rc.getWhiteList() has elements");
213 runtest
.fail ("rc.getWhiteList() doesn't have elements");
216 if (rc
.getLCShmKey() == 0xdd3adabd) {
217 runtest
.pass ("rc.getLCShmKey() == 0xabcd1234");
219 runtest
.fail ("rc.getLCShmKey() != 0xabcd1234");
222 if (rc
.getRootCert() == "testrootcert.pem") {
223 runtest
.pass ("rc.getRootCert() == testrootcert.pem");
225 runtest
.fail ("rc.getRootCert() != testrootcert.pem");
228 if (rc
.getCertFile() == "testclient.pem") {
229 runtest
.pass ("rc.getCertFile() == testclient.pem");
231 runtest
.fail ("rc.getCertFile() != testclient.pem");
234 if (rc
.getCertDir() == "/test/etc/pki/tls/") {
235 runtest
.pass ("rc.getCertDir() == /test/etc/pki/tls/");
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()");
246 runtest
.fail ("rc.getBlackList()");
248 runtest
.pass ("rc.getBlackList() has elements");
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");
257 if ( localSandbox
[0] == "/tmp/p1" )
259 runtest
.pass ("set localSandbox");
263 runtest
.fail ("rc.getLocalSandboxPath() doesn't have the correct first element after set");
267 if (rc
.getURLOpenerFormat() == "lynx %u") {
268 runtest
.pass ("getURLOpenerFormat");
270 runtest
.fail ("getURLOpenerFormat");
273 if (rc
.getSOLSafeDir() == "/tmp/SharedObjects") {
274 runtest
.pass ("getSOLSafeDir");
276 runtest
.fail ("getSOLSafeDir");
279 if (rc
.getSOLReadOnly() == true) {
280 runtest
.pass ("getSOLReadOnly");
282 runtest
.fail ("getSOLReadOnly");
285 if (rc
.ignoreShowMenu() == false) {
286 runtest
.pass ("ignoreShowMenu");
288 runtest
.fail ("ignoreShowMenu");
291 if ( rc
.getRenderer().empty() ) {
292 runtest
.pass ("getRenderer gives empty string");
294 runtest
.fail ("getRenderer gives " + rc
.getRenderer() );
297 if ( rc
.getMediaHandler().empty() ) {
298 runtest
.pass ("getMediaHandler gives empty string");
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");
313 runtest
.fail ("rc.getBlackList(): append");
315 runtest
.pass ("rc.getBlackList(): has appended elements");
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");
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");
333 if ( localSandbox
.back() == "/tmp/gnash" )
335 runtest
.pass ("append localSandbox");
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() );
346 runtest
.fail ("getRenderer gives " + rc
.getRenderer() );
349 if ( rc
.getMediaHandler() == std::string("fakeMediaHandler") ) {
350 runtest
.pass ("getMediaHandler gives " + rc
.getMediaHandler() );
352 runtest
.fail ("getMediaHandler gives " + rc
.getMediaHandler() );