annotate xpcom/test/test_streams.py @ 8:9491ac848af1 default tip

The pyxpcom library now uses @executable_path. Refined the Makefile more.
author Atul Varma <varmaa@toolness.com>
date Thu, 08 May 2008 11:01:04 -0700
parents 3393caed6b2d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 # ***** BEGIN LICENSE BLOCK *****
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 # The contents of this file are subject to the Mozilla Public License Version
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 # 1.1 (the "License"); you may not use this file except in compliance with
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 # the License. You may obtain a copy of the License at
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 # http://www.mozilla.org/MPL/
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 # Software distributed under the License is distributed on an "AS IS" basis,
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 # for the specific language governing rights and limitations under the
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 # License.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 # The Original Code is the Python XPCOM language bindings.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 # The Initial Developer of the Original Code is
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 # ActiveState Tool Corp.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18 # Portions created by the Initial Developer are Copyright (C) 2000,2001
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 # the Initial Developer. All Rights Reserved.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 # Contributor(s):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 # Mark Hammond <MarkH@ActiveState.com> (original author)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 # Alternatively, the contents of this file may be used under the terms of
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 # either the GNU General Public License Version 2 or later (the "GPL"), or
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 # in which case the provisions of the GPL or the LGPL are applicable instead
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 # of those above. If you wish to allow use of your version of this file only
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 # under the terms of either the GPL or the LGPL, and not to allow others to
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 # use your version of this file under the terms of the MPL, indicate your
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 # decision by deleting the provisions above and replace them with the notice
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 # and other provisions required by the GPL or the LGPL. If you do not delete
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 # the provisions above, a recipient may use your version of this file under
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 # the terms of any one of the MPL, the GPL or the LGPL.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 #
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 # ***** END LICENSE BLOCK *****
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 import xpcom
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 from xpcom import _xpcom, components, COMException, ServerException, nsError
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 from StringIO import StringIO
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 import unittest
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 from pyxpcom_test_tools import testmain
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 test_data = "abcdefeghijklmnopqrstuvwxyz"
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 class koTestSimpleStream:
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 _com_interfaces_ = [components.interfaces.nsIInputStream]
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 # We avoid registering this object - see comments in get_test_inout_? below.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 def __init__(self):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 self.data=StringIO(test_data)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 self._non_blocking = False
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 def close( self ):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 pass
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 def available( self ):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 return self.data.len-self.data.pos
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 def readStr( self, amount):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 return self.data.read(amount)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 read=readStr
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 def get_observer( self ):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 raise ServerException(nsError.NS_ERROR_NOT_IMPLEMENTED)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 def set_observer( self, param0 ):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 raise ServerException(nsError.NS_ERROR_NOT_IMPLEMENTED)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 def isNonBlocking(self):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 return self._non_blocking
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
73
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74 def get_test_input():
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
75 # We use a couple of internal hacks here that mean we can avoid having the object
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
76 # registered. This code means that we are still working over the xpcom boundaries, tho
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77 # (and the point of this test is not the registration, etc).
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
78 import xpcom.server, xpcom.client
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
79 ob = xpcom.server.WrapObject( koTestSimpleStream(), _xpcom.IID_nsISupports)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80 ob = xpcom.client.Component(ob._comobj_, components.interfaces.nsIInputStream)
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 return ob
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 class StreamTests(unittest.TestCase):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84 def testInput(self):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 self.do_test_input( get_test_input() )
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
86
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
87 def do_test_input(self, myStream):
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
88 self.failUnlessEqual(str(myStream.read(5)), test_data[:5])
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89 self.failUnlessEqual(str(myStream.read(0)), '')
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90 self.failUnlessEqual(str(myStream.read(5)), test_data[5:10])
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
91 self.failUnlessEqual(str(myStream.read(-1)), test_data[10:])
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
92 self.failIf(myStream.isNonBlocking(), "Expected default to be blocking")
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
93 # stream observer mechanism has changed - we should test that.
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
94
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
95 if __name__=='__main__':
3393caed6b2d Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
96 testmain()