gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/rtmp r9616: Test case for converting as_va


From: rob
Subject: [Gnash-commit] /srv/bzr/gnash/rtmp r9616: Test case for converting as_values and amf::Elements.
Date: Wed, 03 Sep 2008 14:29:11 -0600
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9616
committer: address@hidden
branch nick: rtmp
timestamp: Wed 2008-09-03 14:29:11 -0600
message:
  Test case for converting as_values and amf::Elements.
added:
  testsuite/libcore.all/AsValue.cpp
=== added file 'testsuite/libcore.all/AsValue.cpp'
--- a/testsuite/libcore.all/AsValue.cpp 1970-01-01 00:00:00 +0000
+++ b/testsuite/libcore.all/AsValue.cpp 2008-09-03 20:29:11 +0000
@@ -0,0 +1,259 @@
+// 
+//   Copyright (C) 2008 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#ifdef HAVE_DEJAGNU_H
+
+#include <string>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <log.h>
+#include <iostream>
+#include <string>
+#include "VM.h"
+#include "DummyMovieDefinition.h"
+#include "DummyCharacter.h"
+#include "ManualClock.h"
+#include "movie_definition.h"
+#include "dejagnu.h"
+#include "as_value.h"
+#include "as_object.h"
+#include "arg_parser.h"
+#include "buffer.h"
+#include "network.h"
+#include "amf.h"
+#include "element.h"
+
+using namespace amf;
+using namespace gnash;
+using namespace std;
+
+static void usage (void);
+
+// Prototypes for test cases
+static void test_el();
+static void test_obj();
+
+// Enable the display of memory allocation and timing data
+static bool memdebug = false;
+
+TestState runtest;
+LogFile& dbglogfile = LogFile::getDefaultInstance();
+RcInitFile& rcfile = RcInitFile::getDefaultInstance();
+
+int
+main(int argc, char *argv[])
+{    const Arg_parser::Option opts[] =
+        {
+            { 'h', "help",          Arg_parser::no  },
+            { 'v', "verbose",       Arg_parser::no  },
+            { 'd', "dump",          Arg_parser::no  },
+        };
+    
+    Arg_parser parser(argc, argv, opts);
+    if( ! parser.error().empty() ) {
+        cout << parser.error() << endl;
+        exit(EXIT_FAILURE);
+    }
+    
+    for( int i = 0; i < parser.arguments(); ++i ) {
+        const int code = parser.code(i);
+        try {
+            switch( code ) {
+              case 'h':
+                  usage ();
+                  exit(EXIT_SUCCESS);
+              case 'v':
+                    dbglogfile.setVerbosity();
+                    // This happens once per 'v' flag 
+                    log_debug(_("Verbose output turned on"));
+                    break;
+           }
+        }
+        
+        catch (Arg_parser::ArgParserException &e) {
+            cerr << _("Error parsing command line options: ") << e.what() << 
endl;
+            cerr << _("This is a Gnash bug.") << endl;
+        }
+    }
+
+    // Initialize gnash lib
+    gnashInit();
+
+    // Create a bogus movie with swf version 7 support
+    boost::intrusive_ptr<movie_definition> md ( new DummyMovieDefinition(7) );
+    ManualClock clock;
+    VM& vm = VM::init(*md, clock);
+    
+    movie_instance* root = md->create_movie_instance();
+    vm.getRoot().setRootMovie(root);
+
+    // run the tests
+    test_el();
+    test_obj();
+}
+
+void
+test_el()
+{
+//    bool notest = false;
+    
+    Element el1;
+    el1.makeNumber(1.234);
+    as_value as1(el1);
+    if (as1.to_number() == el1.to_number()) {
+        runtest.pass("as_value(Element &number)");
+    } else {
+        runtest.fail("as_value(Element &number)");
+    }
+//     Element el11 = as1.to_element();
+//     if (el11.to_number() == as1.to_number()) {
+//         runtest.pass("as_value::to_element(number)");
+//     } else {
+//         runtest.fail("as_value::to_element(number)");
+//     }
+    
+    Element el2;
+    el2.makeString("Hello World");
+    as_value as2(el2);
+    if (as2.to_string() == el2.to_string()) {
+        runtest.pass("as_value(Element &string)");
+    } else {
+        runtest.fail("as_value(Element &string)");
+    }
+    
+    Element el3;
+    el3.makeBoolean(true);
+    as_value as3(el3);    
+    if ((as3.is_bool()) && (as3.to_bool() == true)) {
+        runtest.pass("as_value(Element &bool)");
+    } else {
+        runtest.fail("as_value(Element &bool)");
+    }
+
+    Element el4;
+    el4.makeUndefined();
+    as_value as4(el4);
+    if (as4.is_undefined()) {
+        runtest.pass("as_value(Element &undefined)");
+    } else {
+        runtest.fail("as_value(Element &undefined)");
+    }
+    
+    Element el5;
+    el5.makeMovieClip();
+    as_value as5(el5);
+    if (as5.is_sprite()) {
+        runtest.pass("as_value(Element &movieclip)");
+    } else {
+        runtest.fail("as_value(Element &movieclip)");
+    }
+
+    // There is no equivalent AMF element type to the as_value AS_FUNCTION type
+}
+
+void
+test_obj()
+{
+    // Create an object element with some properties
+    bool notest = false;
+    Element top;
+    top.makeObject("toplevel");
+
+    Element *foo = new Element;
+    foo->makeString("foo", "bar");
+    top.addProperty(foo);
+
+    Element *bar = new Element;
+    bar->makeNumber("bar", 1.234);
+    top.addProperty(bar);
+
+    if (top.propertySize() != 2) {
+        notest = true;
+    }
+    
+    VM& vm = VM::get();
+    string_table& st = vm.getStringTable();
+
+    as_value as1(top);
+    
+    if (as1.is_object()) {
+        runtest.pass("as_value(Element &object)");
+    } else {
+        notest = true;
+        runtest.fail("as_value(Element &object)");
+    }
+
+    as_value fooas, baras;
+    boost::intrusive_ptr<as_object> ao1 = as1.to_object();
+
+    if (ao1 == 0) {
+        notest= true;
+    }
+        
+    if (notest) {
+        runtest.unresolved("as_value(Element &prop1)");
+    } else {
+        if (ao1.get() == 0) {
+            runtest.unresolved("as_value(Element &prop1)");
+        } else {
+            ao1.get()->get_member(st.find(PROPNAME("foo")), &fooas);
+            ao1.get()->get_member(st.find(PROPNAME("bar")), &baras);
+            if ((fooas.is_string()) && (fooas.to_string() == 
foo->to_string())) {
+                runtest.pass("as_value(Element &->prop1)");
+            } else {
+                runtest.fail("as_value(Element &->prop1)");
+            }
+            if ((baras.is_number()) && (baras.to_number() == 
bar->to_number())) {
+                runtest.pass("as_value(Element &->prop2)");
+            } else {
+                runtest.fail("as_value(Element &->prop2)");
+            }
+        }
+    }
+
+}
+
+static void
+usage (void)
+{
+    cerr << "This program tests the as_value class." << endl
+         << endl
+         << _("Usage: AsValue [options...]") << endl
+         << _("  -h,  --help          Print this help and exit") << endl
+         << _("  -v,  --verbose       Output verbose debug info") << endl
+         << endl;
+}
+
+#else
+
+int
+main(int /*argc*/, char /* *argv[]*/)
+{
+  // nop
+  return 0;  
+}
+
+#endif
+


reply via email to

[Prev in Thread] Current Thread [Next in Thread]