1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
import tempfile
import os
from nose.tools import *
import networkx as nx
from networkx.utils.decorators import open_file,require,not_implemented_for
def test_not_implemented_decorator():
@not_implemented_for('directed')
def test1(G):
pass
test1(nx.Graph())
@raises(KeyError)
def test_not_implemented_decorator_key():
@not_implemented_for('foo')
def test1(G):
pass
test1(nx.Graph())
@raises(nx.NetworkXNotImplemented)
def test_not_implemented_decorator_raise():
@not_implemented_for('graph')
def test1(G):
pass
test1(nx.Graph())
def test_require_decorator1():
@require('os','sys')
def test1():
import os
import sys
test1()
def test_require_decorator2():
@require('blahhh')
def test2():
import blahhh
assert_raises(nx.NetworkXError, test2)
class TestOpenFileDecorator(object):
def setUp(self):
self.text = ['Blah... ', 'BLAH ', 'BLAH!!!!']
self.fobj = tempfile.NamedTemporaryFile('wb+', delete=False)
self.name = self.fobj.name
def write(self, path):
for text in self.text:
path.write(text.encode('ascii'))
@open_file(1, 'r')
def read(self, path):
return path.readlines()[0]
@staticmethod
@open_file(0, 'wb')
def writer_arg0(path):
path.write('demo'.encode('ascii'))
@open_file(1, 'wb+')
def writer_arg1(self, path):
self.write(path)
@open_file(2, 'wb')
def writer_arg2default(self, x, path=None):
if path is None:
fh = tempfile.NamedTemporaryFile('wb+', delete=False)
close_fh = True
else:
fh = path
close_fh = False
try:
self.write(fh)
finally:
if close_fh:
fh.close()
@open_file(4, 'wb')
def writer_arg4default(self, x, y, other='hello', path=None, **kwargs):
if path is None:
fh = tempfile.NamedTemporaryFile('wb+', delete=False)
close_fh = True
else:
fh = path
close_fh = False
try:
self.write(fh)
finally:
if close_fh:
fh.close()
@open_file('path', 'wb')
def writer_kwarg(self, **kwargs):
path = kwargs.get('path', None)
if path is None:
fh = tempfile.NamedTemporaryFile('wb+', delete=False)
close_fh = True
else:
fh = path
close_fh = False
try:
self.write(fh)
finally:
if close_fh:
fh.close()
def test_writer_arg0_str(self):
self.writer_arg0(self.name)
def test_writer_arg0_fobj(self):
self.writer_arg0(self.fobj)
def test_writer_arg1_str(self):
self.writer_arg1(self.name)
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_arg1_fobj(self):
self.writer_arg1(self.fobj)
assert_false(self.fobj.closed)
self.fobj.close()
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_arg2default_str(self):
self.writer_arg2default(0, path=None)
self.writer_arg2default(0, path=self.name)
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_arg2default_fobj(self):
self.writer_arg2default(0, path=self.fobj)
assert_false(self.fobj.closed)
self.fobj.close()
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_arg2default_fobj(self):
self.writer_arg2default(0, path=None)
def test_writer_arg4default_fobj(self):
self.writer_arg4default(0, 1, dog='dog', other='other2')
self.writer_arg4default(0, 1, dog='dog', other='other2', path=self.name)
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_kwarg_str(self):
self.writer_kwarg(path=self.name)
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_kwarg_fobj(self):
self.writer_kwarg(path=self.fobj)
self.fobj.close()
assert_equal( self.read(self.name), ''.join(self.text) )
def test_writer_kwarg_fobj(self):
self.writer_kwarg(path=None)
def tearDown(self):
self.fobj.close()
|