Lichen

tests/attr_providers.py

336:8c75cdf1a764
2016-12-06 Paul Boddie Introduced stream classes employing C-level FILE pointers, changing the sys stdin, stdout and stderr objects to be instances of these stream classes. Added fread and fwrite support to the native functions. Added support for raising EOFError.
     1 class C:     2     def __init__(self):     3         self.a = 1     4         self.c = 3     5      6     b = 2     7      8 class D:     9     def __init__(self):    10         self.a = 3    11         self.b = 4    12     13 class E:    14     a = 5    15     b = 6    16     17 def f(x):    18     return x.a, x.b    19     20 def g(x):    21     22     # Should only permit D instance and E.    23     24     x.a = 7    25     x.b = 8    26     return f(x)    27     28 def h(x):    29     x.c    30     x.a = 4    31     x.b    32     return f(x)    33     34 c = C()    35 d = D()    36 e = E()    37     38 print f(c)          # (1, 2)    39 print f(d)          # (3, 4)    40 print f(e)          # (5, 6)    41 print f(E)          # (5, 6)    42     43 try:    44     print g(c)      # should fail with an error caused by a test    45 except TypeError:    46     print "g(c): c is not a suitable argument."    47     48 print g(d)          # (7, 8)    49     50 try:    51     print g(e)      # should fail with an error caused by a test    52 except TypeError:    53     print "g(e): e is not a suitable argument."    54     55 print g(E)          # (7, 8)    56     57 print h(c)          # (4, 2)