189 lines
6.9 KiB
Python
189 lines
6.9 KiB
Python
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
# This file incorporates work covered by the following license notice:
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed
|
|
# with this work for additional information regarding copyright
|
|
# ownership. The ASF licenses this file to you under the Apache
|
|
# License, Version 2.0 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
#
|
|
import uno
|
|
import unohelper
|
|
|
|
from com.sun.star.lang import IllegalArgumentException,XServiceInfo
|
|
from com.sun.star.uno import RuntimeException
|
|
from com.sun.star.beans import UnknownPropertyException
|
|
from test.testtools.bridgetest import TestData,XRecursiveCall,XBridgeTestBase
|
|
|
|
g_ImplementationHelper = unohelper.ImplementationHelper()
|
|
g_implName = "org.openoffice.comp.pyuno.PythonTestObject"
|
|
|
|
g_attribs = "RuntimeException", "Bool", "Char", "Byte", "Short", "UShort", \
|
|
"Long", "ULong", "Hyper", "UHyper", "Float", "Double", "Enum", \
|
|
"String", "Interface", "Any" , "Sequence" , "Struct"
|
|
|
|
def assign( rData, bBool, cChar, nByte, nShort, nUShort, nLong, nULong, nHyper,\
|
|
nUHyper, fFloat, fDouble, eEnum, rStr, xTest, rAny ):
|
|
rData.Bool = bBool
|
|
rData.Char = cChar
|
|
rData.Byte = nByte
|
|
rData.Short = nShort
|
|
rData.UShort = nUShort
|
|
rData.Long = nLong
|
|
rData.ULong = nULong
|
|
rData.Hyper = nHyper
|
|
rData.UHyper = nUHyper
|
|
rData.Float = fFloat
|
|
rData.Double = fDouble
|
|
rData.Enum = eEnum
|
|
rData.String = rStr
|
|
rData.Interface = xTest
|
|
rData.Any = rAny
|
|
|
|
class MyRecursiveCall( XRecursiveCall, unohelper.Base ):
|
|
def callRecursivly( xCall, nToCall ):
|
|
if nToCall:
|
|
xCall.callRecursivly( self, nToCall -1 )
|
|
|
|
class SampleUnoComponent( XBridgeTestBase,XServiceInfo ):
|
|
def __init__(self,ctx):
|
|
self.__dict__["callid"] = 0
|
|
self.__dict__["sequenceBroken"] = 0
|
|
|
|
def transportAny( self, value ):
|
|
return value
|
|
|
|
def raiseException( self, ArgumentPosition, Message, Context ):
|
|
raise IllegalArgumentException( Message, Context, ArgumentPosition )
|
|
|
|
def raiseRuntimeExceptionOneway(self, Message, Context ):
|
|
raise RuntimeException( Message, Context )
|
|
|
|
def setValues( self, \
|
|
bBool, \
|
|
cChar, \
|
|
nByte, \
|
|
nShort, \
|
|
nUShort, \
|
|
nLong, \
|
|
nULong, \
|
|
nHyper, \
|
|
nUHyper, \
|
|
fFloat, \
|
|
fDouble, \
|
|
eEnum, \
|
|
aString, \
|
|
xInterface, \
|
|
aAny, \
|
|
aSequence, \
|
|
aStruct ):
|
|
self.__dict__["data"] = TestDataElements( bBool, cChar, nByte, nShort, nUShort, nLong,
|
|
nULong, nHyper, nUHyper, fFloat, fDouble, eEnum, aStruct, xInterface,
|
|
aAny, aSequence )
|
|
self.__dict__["Struct"] = aStruct
|
|
|
|
def setValues2( self, \
|
|
bBool, \
|
|
cChar, \
|
|
nByte, \
|
|
nShort, \
|
|
nUShort, \
|
|
nLong, \
|
|
nULong,\
|
|
nHyper, \
|
|
nUHyper, \
|
|
fFloat, \
|
|
fDouble, \
|
|
eEnum, \
|
|
aString, \
|
|
xInterface, \
|
|
aAny, \
|
|
aSequence, \
|
|
aStruct ):
|
|
self.__dict__["Struct"] = TestData( cChar, nByte, nShort, nUShort, nLong, nULong, nHyper,\
|
|
nUHyper, fFloat, fDouble, eEnum, aStruct, xInterface,\
|
|
aAny, aSequence )
|
|
self.__dict__["Struct"] = aStruct
|
|
return bBool, cChar, nByte, nShort, nUShort, nLong, nULong, nHyper, nUHyper, nULong, \
|
|
nHyper, nUHyper, fFloat, fDouble, eEnum, aStruct, xInterface, aAny, \
|
|
(aSequence[1],aSequence[0]), aStruct
|
|
|
|
def getValues(self, \
|
|
a, \
|
|
b, \
|
|
c, \
|
|
d, \
|
|
e, \
|
|
f, \
|
|
g, \
|
|
h, \
|
|
i, \
|
|
j, \
|
|
k, \
|
|
l, \
|
|
m, \
|
|
n):
|
|
v = self.__dict__["data"]
|
|
return self.__dict__["Struct"],v.Bool, v.Char, v.Byte, v.Short, v.UShort, v.Long, \
|
|
v.ULong, v.Hyper, v.UHyper, v.Float, v.Double, v.Enum, v.String, v.Interface, \
|
|
v.Any, v.Sequence, self.__dict__["Struct"]
|
|
|
|
def call( self, callid, nWaitMUSEC ):
|
|
if self.__dict__["callid"] >= callid:
|
|
self.__dict__["sequenceBroken"] = 1
|
|
else:
|
|
self.__dict__["callid"] = callid
|
|
|
|
def callOneway( self, nCallId, nWaitMUSEC ):
|
|
call( nCallId, nWaitMUSEC )
|
|
|
|
def sequenceOfCallTestPassed():
|
|
return self.__dict__["sequenceBroken"]
|
|
|
|
def startRecursiveCall( xCall , nToCall ):
|
|
if nToCall:
|
|
xCall.callRecursivly( MyRecursiveCall(), nToCall -1 )
|
|
|
|
def checkExistence( self, name ):
|
|
found = 0
|
|
for x in g_attribs:
|
|
if x == name:
|
|
found = 1
|
|
break
|
|
if not found:
|
|
raise UnknownPropertyException( "Property "+name+" is unknown", self )
|
|
|
|
def __setattr__( self, name, value ):
|
|
checkExistence( name )
|
|
self.__dict__[name] = value
|
|
|
|
def __getattr__( self, name ):
|
|
checkExistence( name )
|
|
return self.__dict__[name]
|
|
|
|
def getSupportedServices( self ):
|
|
return g_ImplementationHelper.getSupportedServices(g_implName)
|
|
def supportsService( self, ServiceName ):
|
|
return g_ImplementationHelper.supportsService( g_implName, ServiceName )
|
|
def getImplementationName(self):
|
|
return g_implName
|
|
|
|
|
|
g_ImplementationHelper.addImplementation( \
|
|
SampleUnoComponent,g_implName,("com.sun.star.test.bridge.PythonTestObject",),)
|
|
|
|
#g_ImplementationEntries = \
|
|
# unohelper.ImplementationEntry( \
|
|
# "org.openoffice.comp.SamplePythonComponent", \
|
|
# ("com.sun.star.test.bridge.PythonTestObject",), \
|
|
# SampleUnoComponent) \
|
|
# ,
|
|
|