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