Django

Code

Changeset 5579

Show
Ignore:
Timestamp:
06/30/07 23:47:46 (1 year ago)
Author:
mtredinnick
Message:

Made the reg-exp lookup tests more robust. they now pass for all database
backends and are not dependent on locale sorting order.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/tests/modeltests/lookup/models.py

    r5555 r5579  
    66 
    77from django.db import models 
     8from django.conf import settings 
    89 
    910class Article(models.Model): 
     
    264265>>> a4 = Article(pub_date=now, headline='fooo') 
    265266>>> a4.save() 
    266 >>> a5 = Article(pub_date=now, headline='Foo') 
     267>>> a5 = Article(pub_date=now, headline='hey-Foo') 
    267268>>> a5.save() 
    268269 
     
    271272[<Article: f>, <Article: fo>, <Article: foo>, <Article: fooo>] 
    272273>>> Article.objects.filter(headline__iregex=r'fo*') 
    273 [<Article: Foo>, <Article: f>, <Article: fo>, <Article: foo>, <Article: fooo>] 
     274[<Article: f>, <Article: fo>, <Article: foo>, <Article: fooo>, <Article: hey-Foo>] 
    274275 
    275276# one-or-more 
     
    284285>>> a6 = Article(pub_date=now, headline='bar') 
    285286>>> a6.save() 
    286 >>> a7 = Article(pub_date=now, headline='Bar') 
     287>>> a7 = Article(pub_date=now, headline='AbBa') 
    287288>>> a7.save() 
    288289>>> a8 = Article(pub_date=now, headline='baz') 
    289290>>> a8.save() 
    290 >>> a9 = Article(pub_date=now, headline='baZ') 
     291>>> a9 = Article(pub_date=now, headline='baxZ') 
    291292>>> a9.save() 
    292293 
    293294# leading anchor 
    294295>>> Article.objects.filter(headline__regex=r'^b') 
    295 [<Article: baZ>, <Article: bar>, <Article: baz>] 
    296 >>> Article.objects.filter(headline__iregex=r'^b') 
    297 [<Article: Bar>, <Article: baZ>, <Article: bar>, <Article: baz>] 
     296[<Article: bar>, <Article: baxZ>, <Article: baz>] 
     297>>> Article.objects.filter(headline__iregex=r'^a') 
     298[<Article: AbBa>] 
    298299 
    299300# trailing anchor 
     
    301302[<Article: baz>] 
    302303>>> Article.objects.filter(headline__iregex=r'z$') 
    303 [<Article: baZ>, <Article: baz>] 
     304[<Article: baxZ>, <Article: baz>] 
    304305 
    305306# character sets 
    306307>>> Article.objects.filter(headline__regex=r'ba[rz]') 
    307308[<Article: bar>, <Article: baz>] 
    308 >>> Article.objects.filter(headline__regex=r'ba[RZ]') 
    309 [<Article: baZ>] 
    310 >>> Article.objects.filter(headline__iregex=r'ba[RZ]') 
    311 [<Article: Bar>, <Article: baZ>, <Article: bar>, <Article: baz>] 
     309>>> Article.objects.filter(headline__regex=r'ba.[RxZ]') 
     310[<Article: baxZ>] 
     311>>> Article.objects.filter(headline__iregex=r'ba[RxZ]') 
     312[<Article: bar>, <Article: baxZ>, <Article: baz>] 
    312313 
    313314# and yet more: 
     
    316317>>> a11 = Article(pub_date=now, headline='foobaz') 
    317318>>> a11.save() 
    318 >>> a12 = Article(pub_date=now, headline='FooBarBaz') 
     319>>> a12 = Article(pub_date=now, headline='ooF') 
    319320>>> a12.save() 
    320321>>> a13 = Article(pub_date=now, headline='foobarbaz') 
     
    324325>>> a15 = Article(pub_date=now, headline='barfoobaz') 
    325326>>> a15.save() 
    326 >>> a16 = Article(pub_date=now, headline='BAZBARFOO') 
     327>>> a16 = Article(pub_date=now, headline='bazbaRFOO') 
    327328>>> a16.save() 
    328329 
    329330# alternation 
    330 >>> Article.objects.filter(headline__regex=r'foo(bar|baz)') 
     331>>> Article.objects.filter(headline__regex=r'oo(f|b)') 
    331332[<Article: barfoobaz>, <Article: foobar>, <Article: foobarbaz>, <Article: foobaz>] 
    332 >>> Article.objects.filter(headline__iregex=r'foo(bar|baz)') 
    333 [<Article: FooBarBaz>, <Article: barfoobaz>, <Article: foobar>, <Article: foobarbaz>, <Article: foobaz>] 
    334 >>> Article.objects.filter(headline__regex=r'^foo(bar|baz)') 
     333>>> Article.objects.filter(headline__iregex=r'oo(f|b)') 
     334[<Article: barfoobaz>, <Article: foobar>, <Article: foobarbaz>, <Article: foobaz>, <Article: ooF>] 
     335>>> Article.objects.filter(headline__regex=r'^foo(f|b)') 
    335336[<Article: foobar>, <Article: foobarbaz>, <Article: foobaz>] 
    336337 
    337338# greedy matching 
    338 >>> Article.objects.filter(headline__regex=r'f.*z') 
    339 [<Article: barfoobaz>, <Article: foobarbaz>, <Article: foobaz>, <Article: zoocarfaz>] 
    340 >>> Article.objects.filter(headline__iregex=r'f.*z') 
    341 [<Article: FooBarBaz>, <Article: barfoobaz>, <Article: foobarbaz>, <Article: foobaz>, <Article: zoocarfaz>] 
    342  
     339>>> Article.objects.filter(headline__regex=r'b.*az') 
     340[<Article: barfoobaz>, <Article: baz>, <Article: bazbaRFOO>, <Article: foobarbaz>, <Article: foobaz>] 
     341>>> Article.objects.filter(headline__iregex=r'b.*ar') 
     342[<Article: bar>, <Article: barfoobaz>, <Article: bazbaRFOO>, <Article: foobar>, <Article: foobarbaz>] 
     343"""} 
     344 
     345 
     346if settings.DATABASE_ENGINE not in ('mysql', 'mysql_old'): 
     347    __test__['API_TESTS'] += r""" 
    343348# grouping and backreferences 
    344349>>> Article.objects.filter(headline__regex=r'b(.).*b\1') 
    345 [<Article: barfoobaz>, <Article: foobarbaz>] 
    346 >>> Article.objects.filter(headline__iregex=r'b(.).*b\1') 
    347 [<Article: BAZBARFOO>, <Article: FooBarBaz>, <Article: barfoobaz>, <Article: foobarbaz>] 
    348 """} 
     350[<Article: barfoobaz>, <Article: bazbaRFOO>, <Article: foobarbaz>] 
     351"""