From ac70e26bafb47f8a69aa805273724fba29ccc26f Mon Sep 17 00:00:00 2001 From: Marc Garcia Date: Sat, 8 Aug 2009 15:29:30 +0000 Subject: [soc2009/i18n] tests improved, and bugs fixed on tests and because of tests git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/i18n-improvements@11414 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/i18n/tests.py | 199 +++++++++++++++++++++++++++--------- 1 file changed, 148 insertions(+), 51 deletions(-) (limited to 'tests') diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py index 0ec72dc440..eb19e7f4d3 100644 --- a/tests/regressiontests/i18n/tests.py +++ b/tests/regressiontests/i18n/tests.py @@ -69,11 +69,17 @@ Localization of dates and numbers >>> import datetime >>> import decimal +>>> from django.conf import settings >>> from django.utils.formats import getformat, date_format, number_format, localize +>>> from django.utils.numberformat import format >>> from django import template >>> from django import forms >>> from django.forms.extras import SelectDateWidget +>>> old_use_i18n = settings.USE_I18N +>>> old_use_format_i18n = settings.USE_FORMAT_I18N +>>> old_use_thousand_separator = settings.USE_THOUSAND_SEPARATOR + >>> n = decimal.Decimal('66666.666') >>> f = 99999.999 >>> d = datetime.date(2009, 12, 31) @@ -88,14 +94,23 @@ Localization of dates and numbers Locale independent ->>> number_format(n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',') -'66,666.66' ->>> number_format(n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B') -'6B6B6B6B6BA6' +>>> settings.USE_FORMAT_I18N = True +>>> settings.USE_THOUSAND_SEPARATOR = False +>>> format(n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',') +u'66666.66' +>>> format(n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B') +u'66666A6' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> format(n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',') +u'66,666.66' +>>> format(n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B') +u'6B6B6B6B6A6' -English locale +Catalan locale with format i18n disabled +translations will be used, but not formats ->>> activate('en') +>>> settings.USE_FORMAT_I18N = False +>>> activate('ca') >>> getformat('DATE_FORMAT') 'N j, Y' >>> getformat('FIRST_DAY_OF_WEEK') @@ -103,40 +118,102 @@ English locale >>> getformat('DECIMAL_SEPARATOR') '.' >>> date_format(d) -'December 31, 2009' +u'des. 31, 2009' >>> date_format(d, 'YEAR_MONTH_FORMAT') -'December 2009' ->>> date_format(d, 'SHORT_DATETIME_FORMAT') -'12/31/2009 8:50 p.m.' +u'desembre 2009' +>>> date_format(dt, 'SHORT_DATETIME_FORMAT') +u'12/31/2009 8:50 p.m.' >>> localize('No localizable') 'No localizable' >>> localize(n) -'66666.666' +Decimal('66666.666') >>> localize(f) -'99999.999' +99999.999 >>> localize(d) -'December 31, 2009' +datetime.date(2009, 12, 31) >>> localize(dt) -'December 31, 2009, 8:50 p.m.' +datetime.datetime(2009, 12, 31, 20, 50) >>> template.Template('{{ n }}').render(ctxt) -'66666.666' +u'66666.666' >>> template.Template('{{ f }}').render(ctxt) -'99999.999' +u'99999.999' >>> template.Template('{{ d }}').render(ctxt) -'December 31, 2009' +u'desembre 31, 2009' >>> template.Template('{{ dt }}').render(ctxt) -'December 31, 2009, 8:50 p.m.' +u'desembre 31, 2009, 8:50 p.m.' >>> template.Template('{{ n|floatformat:2 }}').render(ctxt) -'66666.66' +u'66666.67' >>> template.Template('{{ f|floatformat }}').render(ctxt) -'99999.9' +u'100000.0' >>> template.Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(ctxt) -'12/31/2009' +u'12/31/2009' >>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt) -'12/31/2009 8:50 p.m.' ->>> form = I18nForm({'decimal_field': u'66666.666', 'float_field': u'99999.999', 'date_field': u'12/31/2009', 'datetime_field': u'12/31/2009 20:50', 'time_field': u'20:50'}) +u'12/31/2009 8:50 p.m.' +>>> form = I18nForm({'decimal_field': u'66666,666', 'float_field': u'99999,999', 'date_field': u'12/31/2009', 'datetime_field': u'12/31/2009 20:50', 'time_field': u'20:50'}) +>>> form.is_valid() +False +>>> SelectDateWidget().render('mydate', datetime.date(2009, 12, 31)) +u'\n\n' + +Catalan locale + +>>> settings.USE_FORMAT_I18N = True +>>> activate('ca') +>>> getformat('DATE_FORMAT') +'j \de N \de Y' +>>> getformat('FIRST_DAY_OF_WEEK') +1 +>>> getformat('DECIMAL_SEPARATOR') +',' +>>> date_format(d) +u'31 de desembre de 2009' +>>> date_format(d, 'YEAR_MONTH_FORMAT') +u'desembre de 2009' +>>> date_format(dt, 'SHORT_DATETIME_FORMAT') +u'31/12/2009 20:50' +>>> localize('No localizable') +'No localizable' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> localize(n) +u'66.666,666' +>>> localize(f) +u'99.999,999' +>>> settings.USE_THOUSAND_SEPARATOR = False +>>> localize(n) +u'66666,666' +>>> localize(f) +u'99999,999' +>>> localize(d) +u'31 de desembre de 2009' +>>> localize(dt) +u'31 de desembre de 2009 a les 20:50' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> template.Template('{{ n }}').render(ctxt) +u'66.666,666' +>>> template.Template('{{ f }}').render(ctxt) +u'99.999,999' +>>> settings.USE_THOUSAND_SEPARATOR = False +>>> template.Template('{{ n }}').render(ctxt) +u'66666,666' +>>> template.Template('{{ f }}').render(ctxt) +u'99999,999' +>>> template.Template('{{ d }}').render(ctxt) +u'31 de desembre de 2009' +>>> template.Template('{{ dt }}').render(ctxt) +u'31 de desembre de 2009 a les 20:50' +>>> template.Template('{{ n|floatformat:2 }}').render(ctxt) +u'66666,67' +>>> template.Template('{{ f|floatformat }}').render(ctxt) +u'100000,0' +>>> template.Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(ctxt) +u'31/12/2009' +>>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt) +u'31/12/2009 20:50' +>>> form = I18nForm({'decimal_field': u'66666,666', 'float_field': u'99999,999', 'date_field': u'31/12/2009', 'datetime_field': u'31/12/2009 20:50', 'time_field': u'20:50'}) +>>> form.is_valid() +True >>> form.cleaned_data['decimal_field'] -decimal.Decimal('66666.666') +Decimal('66666.666') >>> form.cleaned_data['float_field'] 99999.999 >>> form.cleaned_data['date_field'] @@ -146,54 +223,67 @@ datetime.datetime(2009, 12, 31, 20, 50) >>> form.cleaned_data['time_field'] datetime.time(20, 50) >>> SelectDateWidget().render('mydate', datetime.date(2009, 12, 31)) -u'\n\n' +u'\n\n' -Catalan locale +English locale ->>> activate('ca') +>>> settings.USE_FORMAT_I18N = True +>>> activate('en') >>> getformat('DATE_FORMAT') -'j \de N \de Y' +'N j, Y' >>> getformat('FIRST_DAY_OF_WEEK') -1 +0 >>> getformat('DECIMAL_SEPARATOR') -',' +'.' >>> date_format(d) -'31 de desembre de 2009' +u'Dec. 31, 2009' >>> date_format(d, 'YEAR_MONTH_FORMAT') -'desembre de 2009' ->>> date_format(d, 'SHORT_DATETIME_FORMAT') -'31/12/2009 20:50' +u'December 2009' +>>> date_format(dt, 'SHORT_DATETIME_FORMAT') +u'12/31/2009 8:50 p.m.' >>> localize('No localizable') 'No localizable' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> localize(n) +u'66,666.666' +>>> localize(f) +u'99,999.999' +>>> settings.USE_THOUSAND_SEPARATOR = False >>> localize(n) -'66.666,666' +u'66666.666' >>> localize(f) -'99.999,999' +u'99999.999' >>> localize(d) -'31 de desembre de 2009' +u'Dec. 31, 2009' >>> localize(dt) -'31 de desembre de 2009 a les 20:50' ->>> tplt.render(ctxt) -'66.666,666 # 99.999,999 # 6 de juliol de 2009 # 6 de juliol de 2009 a les 20:50' +u'Dec. 31, 2009, 8:50 p.m.' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> template.Template('{{ n }}').render(ctxt) +u'66,666.666' +>>> template.Template('{{ f }}').render(ctxt) +u'99,999.999' +>>> settings.USE_THOUSAND_SEPARATOR = False >>> template.Template('{{ n }}').render(ctxt) -'66666,666' +u'66666.666' >>> template.Template('{{ f }}').render(ctxt) -'99999,999' +u'99999.999' >>> template.Template('{{ d }}').render(ctxt) -'31 de desembre de 2009' +u'Dec. 31, 2009' >>> template.Template('{{ dt }}').render(ctxt) -'31 de desembre de 2009 a les 20:50' +u'Dec. 31, 2009, 8:50 p.m.' >>> template.Template('{{ n|floatformat:2 }}').render(ctxt) -'66666,66' +u'66666.67' >>> template.Template('{{ f|floatformat }}').render(ctxt) -'99999,9' +u'100000.0' >>> template.Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(ctxt) -'31/12/2009' +u'12/31/2009' >>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt) -'31/12/2009 20:50' ->>> form = I18nForm({'decimal_field': u'66666,666', 'float_field': u'99999,999', 'date_field': u'31/12/2009', 'datetime_field': u'31/12/2009 20:50', 'time_field': u'20:50'}) +u'12/31/2009 8:50 p.m.' +>>> form = I18nForm({'decimal_field': u'66666.666', 'float_field': u'99999.999', 'date_field': u'12/31/2009', 'datetime_field': u'12/31/2009 20:50', 'time_field': u'20:50'}) +>>> form.is_valid() +True >>> form.cleaned_data['decimal_field'] -decimal.Decimal('66666.666') +Decimal('66666.666') >>> form.cleaned_data['float_field'] 99999.999 >>> form.cleaned_data['date_field'] @@ -203,7 +293,14 @@ datetime.datetime(2009, 12, 31, 20, 50) >>> form.cleaned_data['time_field'] datetime.time(20, 50) >>> SelectDateWidget().render('mydate', datetime.date(2009, 12, 31)) -u'\n\n' +u'\n\n' + +Restore defaults + +>>> settings.USE_I18N = old_use_i18n +>>> settings.USE_FORMAT_I18N = old_use_format_i18n +>>> settings.USE_THOUSAND_SEPARATOR = old_use_thousand_separator +>>> deactivate() """ -- cgit v1.3