44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import division, unicode_literals, print_function, absolute_import
|
|
|
|
from pint import formatting as fmt
|
|
from pint.testsuite import QuantityTestCase
|
|
|
|
|
|
class TestFormatter(QuantityTestCase):
|
|
|
|
def test_join(self):
|
|
for empty in (tuple(), []):
|
|
self.assertEqual(fmt._join('s', empty), '')
|
|
self.assertEqual(fmt._join('*', '1 2 3'.split()), '1*2*3')
|
|
self.assertEqual(fmt._join('{0}*{1}', '1 2 3'.split()), '1*2*3')
|
|
|
|
|
|
def test_formatter(self):
|
|
self.assertEqual(fmt.formatter(dict().items()), '')
|
|
self.assertEqual(fmt.formatter(dict(meter=1).items()), 'meter')
|
|
self.assertEqual(fmt.formatter(dict(meter=-1).items()), '1 / meter')
|
|
self.assertEqual(fmt.formatter(dict(meter=-1).items(), as_ratio=False), 'meter ** -1')
|
|
|
|
self.assertEqual(fmt.formatter(dict(meter=-1, second=-1).items(), as_ratio=False),
|
|
'meter ** -1 * second ** -1')
|
|
self.assertEqual(fmt.formatter(dict(meter=-1, second=-1).items()),
|
|
'1 / meter / second')
|
|
self.assertEqual(fmt.formatter(dict(meter=-1, second=-1).items(), single_denominator=True),
|
|
'1 / (meter * second)')
|
|
self.assertEqual(fmt.formatter(dict(meter=-1, second=-2).items()),
|
|
'1 / meter / second ** 2')
|
|
self.assertEqual(fmt.formatter(dict(meter=-1, second=-2).items(), single_denominator=True),
|
|
'1 / (meter * second ** 2)')
|
|
|
|
def test_parse_spec(self):
|
|
self.assertEqual(fmt._parse_spec(''), '')
|
|
self.assertEqual(fmt._parse_spec(''), '')
|
|
self.assertRaises(ValueError, fmt._parse_spec, 'W')
|
|
self.assertRaises(ValueError, fmt._parse_spec, 'PL')
|
|
|
|
def test_format_unit(self):
|
|
self.assertEqual(fmt.format_unit('', 'C'), 'dimensionless')
|
|
self.assertRaises(ValueError, fmt.format_unit, 'm', 'W')
|