LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
astshim.test.ObjectTestCase Class Reference
Inheritance diagram for astshim.test.ObjectTestCase:
astshim.test.MappingTestCase

Public Member Functions

 assertObjectsIdentical (self, obj1, obj2, checkType=True)
 
 checkCopy (self, obj)
 
 checkPersistence (self, obj, typeFromChannel=None)
 

Detailed Description

Base class for unit tests of objects

Definition at line 10 of file test.py.

Member Function Documentation

◆ assertObjectsIdentical()

astshim.test.ObjectTestCase.assertObjectsIdentical ( self,
obj1,
obj2,
checkType = True )
Assert that two astshim objects are identical.

Identical means the objects are of the same class (if checkType)
and all properties are identical (including whether set or defaulted).

Definition at line 14 of file test.py.

14 def assertObjectsIdentical(self, obj1, obj2, checkType=True):
15 """Assert that two astshim objects are identical.
16
17 Identical means the objects are of the same class (if checkType)
18 and all properties are identical (including whether set or defaulted).
19 """
20 if checkType:
21 self.assertIs(type(obj1), type(obj2))
22 self.assertEqual(obj1.show(), obj2.show())
23 self.assertEqual(str(obj1), str(obj2))
24 self.assertEqual(repr(obj1), repr(obj2))
25

◆ checkCopy()

astshim.test.ObjectTestCase.checkCopy ( self,
obj )
Check that an astshim object can be deep-copied

Definition at line 26 of file test.py.

26 def checkCopy(self, obj):
27 """Check that an astshim object can be deep-copied
28 """
29 nobj = obj.getNObject()
30 nref = obj.getRefCount()
31
32 def copyIter(obj):
33 yield obj.copy()
34 yield type(obj)(obj)
35
36 for cp in copyIter(obj):
37 self.assertObjectsIdentical(obj, cp)
38 self.assertEqual(obj.getNObject(), nobj + 1)
39 # Object.copy makes a new pointer instead of copying the old one,
40 # so the reference count of the old one does not increase
41 self.assertEqual(obj.getRefCount(), nref)
42 self.assertFalse(obj.same(cp))
43 self.assertEqual(cp.getNObject(), nobj + 1)
44 self.assertEqual(cp.getRefCount(), 1)
45 # changing an attribute of the copy does not affect the original
46 originalIdent = obj.ident
47 cp.ident = obj.ident + " modified"
48 self.assertEqual(obj.ident, originalIdent)
49
50 del cp
51 self.assertEqual(obj.getNObject(), nobj)
52 self.assertEqual(obj.getRefCount(), nref)
53

◆ checkPersistence()

astshim.test.ObjectTestCase.checkPersistence ( self,
obj,
typeFromChannel = None )
Check that an astshim object can be persisted and unpersisted

@param[in] obj  Object to be checked
@param[in] typeFromChannel  Type of object expected to be read from
                a channel (since some thin wrapper types are read
                as the underlying type); None if the original type

Check persistence using Channel, FitsChan (with native encoding,
as the only encoding compatible with all AST objects), XmlChan
and pickle.

Definition at line 54 of file test.py.

54 def checkPersistence(self, obj, typeFromChannel=None):
55 """Check that an astshim object can be persisted and unpersisted
56
57 @param[in] obj Object to be checked
58 @param[in] typeFromChannel Type of object expected to be read from
59 a channel (since some thin wrapper types are read
60 as the underlying type); None if the original type
61
62 Check persistence using Channel, FitsChan (with native encoding,
63 as the only encoding compatible with all AST objects), XmlChan
64 and pickle.
65 """
66 for channelType, options in (
67 (Channel, ""),
68 (FitsChan, "Encoding=Native"),
69 (XmlChan, ""),
70 ):
71 ss = StringStream()
72 chan = channelType(ss, options)
73 chan.write(obj)
74 ss.sinkToSource()
75 if channelType is FitsChan:
76 chan.clearCard()
77 obj_copy = chan.read()
78 if typeFromChannel is not None:
79 self.assertIs(type(obj_copy), typeFromChannel)
80 self.assertObjectsIdentical(obj, obj_copy, checkType=False)
81 else:
82 self.assertObjectsIdentical(obj, obj_copy)
83
84 obj_copy = pickle.loads(pickle.dumps(obj))
85 self.assertObjectsIdentical(obj, obj_copy)
86
87

The documentation for this class was generated from the following file: