blob: df64b91ff7245d986ca0a3c3c0ffc89acefd7b69 [file]
# 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 *
# *
# Unless required by applicable law or agreed to in writing, *
# software distributed under the License is distributed on an *
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
# KIND, either express or implied. See the License for the *
# specific language governing permissions and limitations *
# under the License.
import unittest
from etch.python.Types import *
from etch.binding.support.RemoteBase import *
class What:
SEND = "SEND"
CALL = "CALL"
BEGINCALL = "BEGINCALL"
class MyDeliveryService(DeliveryService):
def _setUnittest(self, ut):
self.unittest = ut
def send(self, msg):
self.unittest.assertEqual(None, self.what)
self.what = What.SEND
self.xmsg = msg
def begincall(self, msg):
self.unittest.assertEqual(None, self.what)
self.what = What.BEGINCALL
self.xmsg = msg
self.xmb = PlainMailBox(None, 0L, 0, 0, 1)
return self.xmb
def endcall(self, mb, responseType, responseField, timeout):
self.unittest.assertEqual(What.BEGINCALL, self.what)
self.unittest.assertEqual(self.xmb, mb)
self.what = What.CALL
self.xmb = None
self.xresponseType = responseType
self.xtimeout = timeout
return 23
def transportControl(self, control, value):
pass
def transportNotify(self, event):
pass
def transportQuery(self, query):
pass
def addStub(self, stub):
pass
def getSource(self):
return None
class MyDefaultValueFactory(DefaultValueFactory):
typs = TypeMap()
class2type = Class2TypeMap()
DefaultValueFactory.init(typs, class2type)
def __init__(self):
super(MyDefaultValueFactory,self).__init__(self.typs, self.class2type)
class Test_EtchSupportRemoteBase(unittest.TestCase):
def setUp(self):
self.svc = MyDeliveryService()
self.vf = MyDefaultValueFactory()
self.rb = RemoteBase(self.svc, self.vf)
self.mt = Type("foo")
self.rmt = Type("bar")
self.rmf = Type("baz")
def test_newMessage(self):
msg = self.rb._newMessage(self.mt)
msg.checkType(self.mt)
self.assertEqual(None, self.svc.what)
self.assertEqual(None, self.svc.xmsg)
self.assertEqual(None, self.svc.xresponseType)
self.assertEqual(None, self.svc.xresponseField)
self.assertEqual(None, self.svc.xtimeout)
def test_send(self):
msg = self.rb._newMessage(self.mt)
self.rb._svc.send(self.msg)
self.assertEqual(self.svc.what, What.SEND)
self.assertEqual(self.svc.xmsg, msg)
self.assertEqual(self.svc.xresponseType)
self.assertEqual(self.svc.xresponseField)
self.assertEqual(self.svc.xtimeout)
def test_call(self):
msg = self.rb._newMessage(self.mt)
result = self.rb._svc.endcall(self.rb._svc.begincall(msg), self.rmt, self.rmf, 98)
self.assertEqual(self.svc.what , What.CALL)
self.assertEqual(self.svc.xmsg, msg)
self.assertEqual(self.svc.xresponseType, self.rmt)
self.assertEqual(self.svc.xresponseField, self.rmf)
self.assertEqual(self.svc.xtimeout, 98)
self.assertEqual(result, 23)
if __name__ == '__main__':
unittest.main()