Package grassyknoll :: Package tests :: Module test_Collection_Objects
[hide private]

Source Code for Module grassyknoll.tests.test_Collection_Objects

  1  import copy 
  2  from itertools import imap 
  3   
  4  from nose.tools import * 
  5   
  6  from grassyknoll.tests import * 
  7  from grassyknoll.collection.Collection import * 
  8   
9 -def test_ids():
10 yield __test_ids, 10 11 yield __test_ids, 1 12 yield __test_ids, 0 13 yield __test_ids, 100
14
15 -def __test_ids(num):
16 ids=CollectionIds(imap(unicode, xrange(num)), {'pants':34}) 17 assert len(ids) == num 18 for i, uid in enumerate(ids): 19 assert unicode(i) == uid 20 assert isinstance(uid, unicode) 21 22 assert hasattr(ids, 'metadata') 23 assert ids.metadata == {'pants':34} 24 25 ids2=copy.copy(ids) 26 27 assert isinstance(ids2, CollectionIds) 28 assert ids is not ids2 29 assert ids == ids2 30 assert ids.metadata is not ids2.metadata 31 assert ids.metadata == ids2.metadata 32 33 dump=ids.dump() 34 assert isinstance(dump, dict) 35 assert_sorted_equals(dump, ['metadata', 'ids']) 36 assert dump['metadata'] is not ids.metadata 37 assert dump['ids'] == ids
38 39
40 -def test_result():
41 result=CollectionResult(pants=42, shirt=36, __id__=u'clothes') 42 43 result2=copy.copy(result) 44 assert result is not result2 45 assert result == result2 46 47 assert result['pants'] == 42 48 del result['pants'] 49 assert 'pants' not in result 50 51 assert not hasattr(result, 'shirt') 52 assert_raises(AttributeError, lambda: result.shirt) 53 assert_raises(AttributeError, delattr, result, 'shirt') 54 assert 'shirt' in result 55 56 assert 'id' not in result 57 assert hasattr(result, 'id') 58 assert result.id == u'clothes' 59 assert result['__id__'] == u'clothes' 60 61 del result.id 62 assert not hasattr(result, 'id') 63 assert '__id__' not in result 64 65 result['__belt__']=u'large' 66 assert result.belt == u'large' 67 68 assert result.items 69 assert_raises(AttributeError, setattr, result, 'items', 42) 70 assert_raises(AttributeError, delattr, result, 'items') 71 assert result.items 72 73 dump=result.dump() 74 assert dump is not result 75 assert dump == result
76
77 -def test_document():
78 doc=CollectionDocument(pants=42, shirt=36, norman='viking') 79 80 doc2=copy.copy(doc) 81 assert doc is not doc2 82 assert doc == doc2 83 assert doc2.norman == 'viking' 84 85 assert doc['pants'] == 42 86 del doc['pants'] 87 assert 'pants' not in doc 88 89 assert not hasattr(doc, 'shirt') 90 assert_raises(AttributeError, lambda: doc.shirt) 91 assert_raises(AttributeError, delattr, doc, 'shirt') 92 assert 'shirt' in doc 93 94 assert doc.norman == 'viking' 95 assert 'norman' not in doc 96 97 doc['__belt__']=u'large' 98 assert doc.belt == u'large' 99 100 assert 'id' not in doc 101 assert not hasattr(doc, 'id') 102 103 doc.id=u'clothes' 104 assert doc.id == u'clothes' 105 assert doc['__id__'] == u'clothes' 106 107 del doc.id 108 assert not hasattr(doc, 'id') 109 assert '__id__' not in doc 110 111 assert doc.items 112 assert_raises(AttributeError, setattr, doc, 'items', 42) 113 assert_raises(AttributeError, delattr, doc, 'items') 114 assert doc.items
115 116
117 -def test_result_set():
118 yield __test_result_set, () 119 yield __test_result_set, [CollectionResult(height=42, width=34, color='blue', __id__=u'pants')] 120 yield __test_result_set, [CollectionResult(height=42, width=34, color='blue', __id__=u'pants'), 121 CollectionResult(height=56, width=101, color='pink', __id__=u'shirt')]
122 123
124 -def __test_result_set(items):
125 rset=CollectionResultSet(items) 126 assert len(rset) == len(items) 127 for r1, r2 in zip(items, rset): 128 assert r1 is r2 129 130 assert hasattr(rset, 'metadata') 131 132 rset2=copy.copy(rset) 133 assert isinstance(rset2, CollectionResultSet) 134 assert rset2 is not rset 135 assert rset2 == rset 136 assert rset2.metadata is not rset.metadata 137 assert rset2.metadata == rset.metadata 138 139 dump=rset.dump() 140 assert isinstance(dump, dict) 141 assert_sorted_equals(dump, ['metadata', 'results']) 142 assert dump['metadata'] is not rset.metadata 143 assert dump['results'] == rset
144