import unittest
from gn2.utility.formatting import numify, commify


class TestFormatting(unittest.TestCase):
    """Test formatting numbers by numifying or commifying"""

    def test_numify(self):
        "Test that a number is correctly converted to a English readable string"
        self.assertEqual(numify(1, 'item', 'items'),
                         'one item')
        self.assertEqual(numify(2, 'book'), 'two')
        self.assertEqual(numify(2, 'book', 'books'), 'two books')
        self.assertEqual(numify(0, 'book', 'books'), 'zero books')
        self.assertEqual(numify(0), 'zero')
        self.assertEqual(numify(5), 'five')
        self.assertEqual(numify(14, 'book', 'books'), '14 books')
        self.assertEqual(numify(999, 'book', 'books'), '999 books')
        self.assertEqual(numify(1000000, 'book', 'books'), '1,000,000 books')
        self.assertEqual(numify(1956), '1956')

    def test_commify(self):
        "Test that commas are added correctly"
        self.assertEqual(commify(1), '1')
        self.assertEqual(commify(123), '123')
        self.assertEqual(commify(1234), '1234')
        self.assertEqual(commify(12345), '12,345')
        self.assertEqual(commify(1234567890), '1,234,567,890')
        self.assertEqual(commify(123.0), '123.0')
        self.assertEqual(commify(1234.5), '1234.5')
        self.assertEqual(commify(1234.56789), '1234.56789')
        self.assertEqual(commify(123456.789), '123,456.789')
        self.assertEqual(commify(None), None)
