Ignore:
Timestamp:
04/07/07 14:27:06 (12 years ago)
Author:
lawrence
Message:

Look and feel of result set is now close to Kay's concepts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/DiscoveryState.py

    r2672 r2703  
    1616        self.stride=stride 
    1717        self.searchString=searchString 
     18        self.alternatives=None 
    1819    def geturl(self,**kw): 
    1920        ''' Get a url from the wsgi environment, modified by the keyword arguments offset and stride  
     
    2930        url=cgi.escape(url) 
    3031        return url 
     32    def getNext(self): 
     33        ''' Get the next slice ''' 
     34        result=[] 
     35        defStride=10 
     36        if self.offset+self.stride<self.hits: 
     37            #there are more to look at 
     38            r=[self.offset+self.stride,self.stride] 
     39            if r[0]+r[1]-1>self.hits: r[1]=self.hits+1-r[0] 
     40            result.append(r) 
     41        else:result.append([]) 
     42        if self.offset>1: 
     43            #there are previous records 
     44            b=max(self.stride,defStride) 
     45            r=[self.offset-b,b] 
     46            if r[0]<1: r[0]=1 
     47            if r[1]>self.hits: r[1]=self.hits 
     48            result.append(r) 
     49        else: result.append([]) 
     50        return result 
     51         
    3152    def __str__(self): 
    3253        return '''  
     
    4162'''%(self.searchString,self.constraints,self.sessID,self.hits,self.offset,self.stride,self.environ) 
    4263         
    43 import unittest 
     64if __name__=="__main__": 
     65     
     66    import unittest 
     67    DummyEnviron={'QUERY_STRING':'start=10&howmany=10','HTTP_HOST':'example.ndg', 
     68                      'PATH_INFO':'/discovery','wsgi.url_scheme':'http','SERVER_PORT':'80'} 
    4469 
    45 class TestCase(unittest.TestCase): 
     70    class TestCase(unittest.TestCase): 
     71         
     72        def testDiscoveryState(self): 
     73            ''' Test creation of a discovery state variable ''' 
     74            d=DiscoveryState('123','blah',DummyEnviron,12,'(none)') 
     75            self.assertEqual(d.geturl(offset='11',stride='20'), 
     76                            'http://example.ndg/discovery?start=11&amp;howmany=20') 
     77            print d 
    4678     
    47     def testDiscoveryState(self): 
    48         ''' Test creation of a discovery state variable ''' 
    49         DummyEnviron={'QUERY_STRING':'start=10&howmany=10','HTTP_HOST':'example.ndg', 
    50                       'PATH_INFO':'/discovery','wsgi.url_scheme':'http','SERVER_PORT':'80'} 
    51         d=DiscoveryState('123','blah',DummyEnviron,12,'(none)') 
    52         self.assertEqual(d.geturl(offset='11',stride='20'), 
    53                          'http://example.ndg/discovery?start=11&howmany=20') 
    54         print d 
    55   
    56          
    57 if __name__=="__main__": 
     79        def testStrideself(self): 
     80            ''' Test striding through a dataset ''' 
     81             
     82            s=DiscoveryState('123','blah',DummyEnviron,15,'(none)',1,10) 
     83            res=s.getNext() 
     84            self.assertEqual([[11,5],[]],res) 
     85             
     86            s=DiscoveryState('123','blah',DummyEnviron,15,'(none)',11,5) 
     87            res=s.getNext() 
     88            self.assertEqual([[],[1,10]],res) 
     89             
     90            s=DiscoveryState('123','blah',DummyEnviron,50,'(none)',11,10) 
     91            res=s.getNext() 
     92            self.assertEqual([[21,10],[1,10]],res)  
     93 
     94                
    5895    unittest.main() 
    59                 
    60  
    6196                       
    6297         
Note: See TracChangeset for help on using the changeset viewer.