from common import *

from trezor import strings


class TestStrings(unittest.TestCase):

    def test_format_amount(self):
        VECTORS = [
            (123456, 3, "123.456"),
            (4242, 7, "0.0004242"),
            (-123456, 3, "-123.456"),
            (-4242, 7, "-0.0004242"),
        ]
        for v in VECTORS:
            self.assertEqual(strings.format_amount(v[0], v[1]), v[2])

    def test_format_plural(self):
        VECTORS = [
            ("We need {count} more {plural}", 3, "share", "We need 3 more shares"),
            ("We need {count} more {plural}", 1, "share", "We need 1 more share"),
            ("We need {count} more {plural}", 1, "candy", "We need 1 more candy"),
            ("We need {count} more {plural}", 7, "candy", "We need 7 more candies"),
            ("We need {count} more {plural}", 1, "hash", "We need 1 more hash"),
            ("We need {count} more {plural}", 2, "hash", "We need 2 more hashes"),
            ("We need {count} more {plural}", 1, "fuzz", "We need 1 more fuzz"),
            ("We need {count} more {plural}", 2, "fuzz", "We need 2 more fuzzes"),
        ]
        for v in VECTORS:
            self.assertEqual(strings.format_plural(v[0], v[1], v[2]), v[3])

        with self.assertRaises(ValueError):
            strings.format_plural("Hello", 1, "share")

    def test_format_duration_ms(self):
        VECTORS = [
            (0, "0 milliseconds"),
            (1, "1 millisecond"),
            (999, "999 milliseconds"),
            (1000, "1 second"),
            (2345, "2 seconds"),
            (59999, "59 seconds"),
            (60 * 1000, "1 minute"),
            (119 * 1000, "1 minute"),
            (120 * 1000, "2 minutes"),
            (59 * 60 * 1000, "59 minutes"),
            (60 * 60 * 1000, "1 hour"),
            (119 * 60 * 1000, "1 hour"),
            (3 * 60 * 60 * 1000, "3 hours"),
            (48 * 60 * 60 * 1000, "48 hours"),
        ]

        for v in VECTORS:
            self.assertEqual(strings.format_duration_ms(v[0]), v[1])


if __name__ == '__main__':
    unittest.main()