Commit d8df97aa by Ned Batchelder

Use ddt to separate test cases into tests.

parent 209f8cc3
"""Tests of i18n/converter.py"""
import os import os
from unittest import TestCase from unittest import TestCase
import ddt
import converter import converter
...@@ -11,39 +14,48 @@ class UpcaseConverter(converter.Converter): ...@@ -11,39 +14,48 @@ class UpcaseConverter(converter.Converter):
return string.upper() return string.upper()
@ddt.ddt
class TestConverter(TestCase): class TestConverter(TestCase):
""" """
Tests functionality of i18n/converter.py Tests functionality of i18n/converter.py
""" """
def test_converter(self): @ddt.data(
# no tags
('big bad wolf',
'BIG BAD WOLF'),
# one html tag
('big <strong>bad</strong> wolf',
'BIG <strong>BAD</strong> WOLF'),
# two html tags
('big <b>bad</b> gray <i>wolf</i>',
'BIG <b>BAD</b> GRAY <i>WOLF</i>'),
# html tags with attributes
('<a href="foo">bar</a> baz',
'<a href="foo">BAR</a> BAZ'),
("<a href='foo'>bar</a> baz",
"<a href='foo'>BAR</a> BAZ"),
# one python tag
('big %(adjective)s wolf',
'BIG %(adjective)s WOLF'),
# two python tags
('big %(adjective)s gray %(noun)s',
'BIG %(adjective)s GRAY %(noun)s'),
# both kinds of tags
('<strong>big</strong> %(adjective)s %(noun)s',
'<strong>BIG</strong> %(adjective)s %(noun)s'),
# .format-style tags
('The {0} barn is {1!r}.',
'THE {0} BARN IS {1!r}.'),
# HTML entities
('<b>&copy; 2013 edX, &#xa0;</b>',
'<b>&copy; 2013 EDX, &#xa0;</b>'),
)
def test_converter(self, data):
""" """
Tests with a simple converter (converts strings to uppercase). Tests with a simple converter (converts strings to uppercase).
Assert that embedded HTML and python tags are not converted. Assert that embedded HTML and python tags are not converted.
""" """
c = UpcaseConverter() source, expected = data
test_cases = [ result = UpcaseConverter().convert(source)
# no tags self.assertEquals(result, expected)
('big bad wolf', 'BIG BAD WOLF'),
# one html tag
('big <strong>bad</strong> wolf', 'BIG <strong>BAD</strong> WOLF'),
# two html tags
('big <b>bad</b> <i>wolf</i>', 'BIG <b>BAD</b> <i>WOLF</i>'),
# html tags with attributes
('<a href="foo">bar</a> baz', '<a href="foo">BAR</a> BAZ'),
("<a href='foo'>bar</a> baz", "<a href='foo'>BAR</a> BAZ"),
# one python tag
('big %(adjective)s wolf', 'BIG %(adjective)s WOLF'),
# two python tags
('big %(adjective)s %(noun)s', 'BIG %(adjective)s %(noun)s'),
# both kinds of tags
('<strong>big</strong> %(adjective)s %(noun)s',
'<strong>BIG</strong> %(adjective)s %(noun)s'),
# .format-style tags
('The {0} barn is {1!r}.', 'THE {0} BARN IS {1!r}.'),
# HTML entities
('<b>&copy; 2013 edX, &#xa0;</b>', '<b>&copy; 2013 EDX, &#xa0;</b>'),
]
for source, expected in test_cases:
result = c.convert(source)
self.assertEquals(result, expected)
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Tests of i18n/dummy.py"""
import os, string, random import os, string, random
from unittest import TestCase from unittest import TestCase
import ddt
from polib import POEntry from polib import POEntry
import dummy import dummy
@ddt.ddt
class TestDummy(TestCase): class TestDummy(TestCase):
""" """
Tests functionality of i18n/dummy.py Tests functionality of i18n/dummy.py
...@@ -27,24 +32,24 @@ class TestDummy(TestCase): ...@@ -27,24 +32,24 @@ class TestDummy(TestCase):
"Mismatch: %r != %r" % (str1, str2), "Mismatch: %r != %r" % (str1, str2),
) )
def test_dummy(self): @ddt.data(
(u"hello my name is Bond, James Bond",
u"héllø mý nämé ïs Bønd, Jämés Bønd Ⱡσяєм ι#"),
(u"don't convert <a href='href'>tag ids</a>",
u"døn't çønvért <a href='href'>täg ïds</a> Ⱡσяєм ιρѕυ#"),
(u"don't convert %(name)s tags on %(date)s",
u"døn't çønvért %(name)s tägs øn %(date)s Ⱡσяєм ιρѕ#"),
)
def test_dummy(self, data):
""" """
Tests with a dummy converter (adds spurious accents to strings). Tests with a dummy converter (adds spurious accents to strings).
Assert that embedded HTML and python tags are not converted. Assert that embedded HTML and python tags are not converted.
""" """
test_cases = [ source, expected = data
(u"hello my name is Bond, James Bond", result = self.converter.convert(source)
u"héllø mý nämé ïs Bønd, Jämés Bønd Ⱡσяєм ι#"), self.assertUnicodeEquals(result, expected)
(u"don't convert <a href='href'>tag ids</a>",
u"døn't çønvért <a href='href'>täg ïds</a> Ⱡσяєм ιρѕυ#"),
(u"don't convert %(name)s tags on %(date)s",
u"døn't çønvért %(name)s tägs øn %(date)s Ⱡσяєм ιρѕ#"),
]
for source, expected in test_cases:
result = self.converter.convert(source)
self.assertUnicodeEquals(result, expected)
def test_singular(self): def test_singular(self):
entry = POEntry() entry = POEntry()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment