Author: kwright
Date: Fri Jun 27 17:11:00 2014
New Revision: 1606150

URL: http://svn.apache.org/r1606150
Log:
Fix Solr UI test.  Part of CONNECTORS-985.

Modified:
    
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/Javascript.py
    
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/VirtualBrowser.py

Modified: 
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/Javascript.py
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/Javascript.py?rev=1606150&r1=1606149&r2=1606150&view=diff
==============================================================================
--- 
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/Javascript.py
 (original)
+++ 
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/Javascript.py
 Fri Jun 27 17:11:00 2014
@@ -53,12 +53,18 @@ class JSObject:
         # an error
         raise Exception("Attempt to construct a non-class object: %s" % 
unicode(self))
 
+    def get_type( self, member_name ):
+        return JSString( "undefined" )
+
     def get_value( self, member_name ):
         raise Exception("Object %s has no such property '%s'" % 
(unicode(self), member_name) )
 
     def set_value( self, member_name, value ):
         raise Exception("Object %s has no such property '%s'" % 
(unicode(self), member_name) )
 
+    def type_value( self ):
+        raise Exception("Object %s has no type value" % unicode(self) )
+
     def str_value( self ):
         raise Exception("Object %s has no string value" % unicode(self) )
 
@@ -78,6 +84,11 @@ class JSObject:
         # return self.
         return self
 
+    def dereference_type( self ):
+        # For objects that are references, this operation dereferences them.  
All others
+        # return self.
+        return self.type_value( )
+
 # Array object.
 class JSArray( JSObject ):
 
@@ -87,6 +98,15 @@ class JSArray( JSObject ):
         self.array_size = array_size
         self.array = { }
 
+    def get_type( self, member_name ):
+        if member_name == "length":
+            return "number"
+        index = int(member_name)
+        assert index >=0 and index < self.array_size
+        if index >= len(self.array):
+            return JSObject.get_type( member_name )
+        return self.array[ index ].type_value( )
+
     def get_value( self, member_name ):
         if member_name == "length":
             return JSNumber( self.array_size )
@@ -274,6 +294,9 @@ class JSNumber( JSObject ):
         JSObject.__init__( self )
         self.value = value
 
+    def type_value( self ):
+        return unicode( "number" )
+
     def num_value( self ):
         return self.value
 
@@ -326,6 +349,9 @@ class JSRegexp( JSObject ):
         self.is_global = is_global
         self.is_insensitive = is_insensitive
 
+    def type_value( self ):
+        return unicode( "regexp" )
+
     def get_value( self, member_name ):
         # A regexp has a method property for the test method (which is the 
only one
         # we currently support)
@@ -511,6 +537,9 @@ class JSString( JSObject ):
             return JSSubstring( self )
         return JSObject.get_value( self, member_name )
 
+    def type_value( self ):
+        return unicode( "string" )
+
     def str_value( self ):
         return unicode( self.value )
 
@@ -552,12 +581,18 @@ class JSReference( JSObject ):
     def call( self, argset, context ):
         return self.dereference().call(argset,context)
 
+    def get_type( self, member_name ):
+        return self.dereference().get_type(member_name)
+
     def get_value( self, member_name ):
         return self.dereference().get_value(member_name)
 
     def set_value( self, member_name, value ):
         self.dereference().set_value(member_name,value)
 
+    def type_value( self ):
+        return self.dereference_type()
+
     def str_value( self ):
         return self.dereference().str_value()
 
@@ -582,6 +617,9 @@ class JSObjMemberReference( JSReference 
     def dereference( self ):
         return self.object.get_value( self.member )
 
+    def dereference_type( self ):
+        return self.object.get_type( self.member )
+
     def set_reference( self, newobject ):
         self.object.set_value( self.member, newobject )
 
@@ -1508,6 +1546,15 @@ class JSTokenStream:
             if parse_only:
                 return JSNull()
             return self.pre_plusplus ( nextvalue )
+        elif token != None and token.get_symbol( ) == "typeof":
+            # typeof operator
+            self.advance( )
+            nextvalue = self.evaluate_expr9( context, place, parse_only )
+            if nextvalue == None:
+                raise Exception("Missing expression after 'typeof' in %s" % 
place)
+            if parse_only:
+                return JSNull()
+            return self.typeof( nextvalue ) 
         elif token != None and token.get_symbol( ) == "new":
             self.advance( )
             token = self.peek( )
@@ -1576,6 +1623,9 @@ class JSTokenStream:
     def positive( self, value1 ):
         return JSNumber( +value1.num_value( ) )
 
+    def typeof( self, value1 ):
+        return JSString( value1.type_value( ) )
+
     def post_minusminus( self, value1 ):
         rval = value1.dereference( )
         value1.set_reference( self.minus( value1, JSNumber( 1 ) ).dereference( 
) )

Modified: 
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/VirtualBrowser.py
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/VirtualBrowser.py?rev=1606150&r1=1606149&r2=1606150&view=diff
==============================================================================
--- 
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/VirtualBrowser.py
 (original)
+++ 
manifoldcf/trunk/framework/core/src/test/resources/org/apache/manifoldcf/core/tests/VirtualBrowser.py
 Fri Jun 27 17:11:00 2014
@@ -88,6 +88,9 @@ class VirtualFormDataElement( VirtualFor
     def get_property( self, property_name ):
         raise Exception("Form element '%s' has no such property '%s'" % 
(self.element_name, property_name))
 
+    # Get the type of a property (via javascript)
+    def get_property_type( self, property_name ):
+        return "undefined"
 
 # Button base class
 class VirtualButton( VirtualFormElement ):
@@ -217,6 +220,14 @@ class VirtualHiddenField( VirtualFormDat
         else:
             return VirtualFormDataElement.get_property( self, property_name )
 
+    def get_property_type( self, property_name ):
+        if property_name == "type":
+            return "string"
+        if property_name == "value":
+            return "string"
+        else:
+            return VirtualFormDataElement.get_property_type( self, 
property_name )
+
 # File
 class VirtualFileBrowser( VirtualFormDataElement ):
 
@@ -249,6 +260,12 @@ class VirtualFileBrowser( VirtualFormDat
         else:
             return VirtualFormDataElement.get_property( self, property_name )
 
+    # Get a property type (via javascript)
+    def get_property_type( self, property_name ):
+        if property_name == "value":
+            return "string"
+        else:
+            return VirtualFormDataElement.get_property_type( self, 
property_name )
 
 # Read a specified file entirely into a "string"
 def read_file( filename ):
@@ -301,6 +318,11 @@ class VirtualCheckbox( VirtualFormDataEl
             return Javascript.JSBoolean(self.selected)
         return VirtualFormDataElement.get_property( self, property_name )
 
+    def get_property_type( self, property_name ):
+        if property_name == "checked":
+            return "boolean"
+        return VirtualFormDataElement.get_property_type( self, property_name )
+
 # Radio
 class VirtualRadiobutton( VirtualFormDataElement ):
 
@@ -512,6 +534,23 @@ class VirtualSelectbox( VirtualFormDataE
         else:
             return VirtualFormDataElement.get_property( self, property_name )
 
+    # Get a property type (via javascript)
+    def get_property_type( self, property_name ):
+        if property_name == "type":
+            return "string"
+        elif property_name == "value":
+            return "string"
+        elif property_name == "options":
+            # Return a JSArray describing the options objects underlying this 
selectbox
+            return "array"
+        elif property_name == "length":
+            # Return as JSNumber describing the length of the array
+            return "number"
+        elif property_name == "selectedIndex":
+            return "number"
+        else:
+            return VirtualFormDataElement.get_property_type( self, 
property_name )
+
     # Get an option object
     def get_option_object( self, index ):
         assert index < len(self.option_value_list)
@@ -575,6 +614,13 @@ class VirtualTextarea( VirtualFormDataEl
         else:
             return VirtualFormDataElement.get_property( self, property_name )
 
+    # Get a property type (via javascript)
+    def get_property_type( self, property_name ):
+        if property_name == "value":
+            return "string"
+        else:
+            return VirtualFormDataElement.get_property_type( self, 
property_name )
+
 # Class that describes a virtual form.  Each form has an identifier (the form 
name), plus form elements
 # that live in the form.
 class VirtualForm:
@@ -1489,6 +1535,12 @@ class JSElementObject( Javascript.JSObje
         assert isinstance( element_object, VirtualFormDataElement )
         self.element_object = element_object
 
+    def get_type( self, member_name ):
+        # We need to return the proper types of the javascript object
+        # properties
+        value = self.element_object.get_property_type( member_name )
+        return value
+        
     def get_value( self, member_name ):
         # The object itself knows what its javascript properties are, so call 
the right
         # method inside.  All properties are currently strings.
@@ -1502,6 +1554,9 @@ class JSElementObject( Javascript.JSObje
         # as strings, though.
         self.element_object.set_property( member_name, value )
 
+    def type_value( self ):
+        return "formelement"
+
     def bool_value( self ):
         # Return true because the object clearly exists
         return True


Reply via email to