1 2from PyObjCTools.TestSupport import * 3from SearchKit import * 4from Foundation import NSMutableData 5 6class TestSKSearch (TestCase): 7 def testTypes(self): 8 self.failUnlessIsInstance(SKSearchGroupRef, objc.objc_class) 9 self.failUnlessIsInstance(SKSearchResultsRef, objc.objc_class) 10 self.failUnlessIsInstance(SKSearchRef, objc.objc_class) 11 12 def testConstants(self): 13 self.failUnlessEqual(kSKSearchRanked, 0) 14 self.failUnlessEqual(kSKSearchBooleanRanked, 1) 15 self.failUnlessEqual(kSKSearchRequiredRanked, 2) 16 self.failUnlessEqual(kSKSearchPrefixRanked, 3) 17 18 self.failUnlessEqual(kSKSearchOptionDefault, 0) 19 self.failUnlessEqual(kSKSearchOptionNoRelevanceScores, 1) 20 self.failUnlessEqual(kSKSearchOptionSpaceMeansOR, 2) 21 self.failUnlessEqual(kSKSearchOptionFindSimilar, 4) 22 23 def testFunctions(self): 24 self.failUnlessIsInstance(SKSearchGroupGetTypeID(), (int, long)) 25 self.failUnlessIsInstance(SKSearchResultsGetTypeID(), (int, long)) 26 self.failUnlessIsInstance(SKSearchGetTypeID(), (int, long)) 27 28 data = NSMutableData.data() 29 index = SKIndexCreateWithMutableData( 30 data, "pyobjc.test", kSKIndexInverted, None) 31 self.failUnlessIsInstance(index, SKIndexRef) 32 doc = SKDocumentCreateWithURL( 33 CFURLCreateWithFileSystemPath( 34 None, u"/Library/Documentation/Acknowledgements.rtf", 35 kCFURLPOSIXPathStyle, False)) 36 doc2 = SKDocumentCreateWithURL( 37 CFURLCreateWithFileSystemPath( 38 None, u"/Library/Documentation/iPod/Acknowledgements.rtf", 39 kCFURLPOSIXPathStyle, False)) 40 SKIndexAddDocumentWithText(index, doc, "copyright and licenses", True) 41 SKIndexAddDocumentWithText(index, doc2, "copyright and licenses for iPod", True) 42 SKIndexFlush(index) 43 44 45 grp = SKSearchGroupCreate([index]) 46 self.failUnlessIsInstance(grp, SKSearchGroupRef) 47 48 49 l = [] 50 51 @objc.callbackFor(SKSearchResultsCreateWithQuery) 52 def callback(idx, doc, ctx): 53 l.append([idx, doc, ctx]) 54 return True 55 56 ctx = 10 57 58 res = SKSearchResultsCreateWithQuery( 59 grp, u"apache", kSKSearchRequiredRanked, 2, ctx, callback) 60 self.failUnlessIsInstance(res, SKSearchResultsRef) 61 62 res = SKSearchResultsCreateWithDocuments( 63 grp, [doc], 10, ctx, callback) 64 self.failUnlessIsInstance(res, SKSearchResultsRef) 65 self.failUnlessEqual(len(l), 2) 66 self.failUnlessEqual(l[0][0], index) 67 self.failUnlessIsInstance(l[0][1], SKDocumentRef) 68 self.failUnlessEqual(l[0][2], ctx) 69 70 cnt = SKSearchResultsGetCount(res) 71 self.failUnlessIsInstance(cnt, (int, long)) 72 self.failUnless(cnt > 0) 73 74 75 v, o1, o2, o3 = SKSearchResultsGetInfoInRange(res, CFRange(0, cnt), None, None, None) 76 self.failUnlessIsInstance(v, int) 77 self.failUnlessIsInstance(o1, tuple) 78 if o1: 79 self.failUnlessIsInstance(o1[0], SKDocumentRef) 80 self.failUnlessIsInstance(o2, tuple) 81 if o2: 82 self.failUnlessIsInstance(o2[0], SKIndexRef) 83 self.failUnlessIsInstance(o3, tuple) 84 if o3: 85 self.failUnlessIsInstance(o3[0], float) 86 87 v = SKSearchResultsCopyMatchingTerms(res, 1) 88 self.failUnlessIsInstance(v, CFArrayRef) 89 90 src = SKSearchCreate(index, "copyright", kSKSearchOptionFindSimilar) 91 self.failUnlessIsInstance(src, SKSearchRef) 92 93 v, o1, o2, o3 = SKSearchFindMatches(src, 10, None, None, 1.0, None) 94 self.failUnlessIsInstance(v, bool) 95 self.failUnlessIsInstance(o1, tuple) 96 if o1: 97 self.failUnlessIsInstance(o1[0], (int, long)) 98 self.failUnlessIsInstance(o2, tuple) 99 if o2: 100 self.failUnlessIsInstance(o2[0], float) 101 self.failUnlessIsInstance(o3, (int, long)) 102 103 v1, v2 = SKIndexCopyInfoForDocumentIDs( 104 index, o3, o1, None, None) 105 if v1: 106 self.failUnlessIsInstance(v1[0], unicode) 107 self.failUnlessIsInstance(v2, tuple) 108 if v2: 109 self.failUnlessIsInstance(v2[0], (int, long)) 110 111 v = SKIndexCopyDocumentRefsForDocumentIDs( 112 index, o3, o1, None) 113 self.failUnlessIsInstance(v, tuple) 114 if v: 115 self.failUnlessIsInstance(v[0], SKDocumentRef) 116 117 v = SKIndexCopyDocumentURLsForDocumentIDs( 118 index, o3, o1, None) 119 self.failUnlessIsInstance(v, tuple) 120 if v: 121 self.failUnlessIsInstance(v[0], CFURLRef) 122 123 self.failUnlessResultIsCFRetained(SKSearchGroupCopyIndexes) 124 a = SKSearchGroupCopyIndexes(grp) 125 self.failUnlessIsInstance(a, CFArrayRef) 126 127 SKSearchCancel(src) 128 129if __name__ == "__main__": 130 main() 131