Files
deb-python-lesscpy/lesscpy/test/testutility.py
Sascha Peilicke 7a65e81fa7 Add utility function convergent_round
Mimics Python3's changed rounding behavior: "The round() function
rounding strategy and return type have changed. Exact halfway cases are
now rounded to the nearest even result instead of away from zero. (For
example, round(2.5) now returns 2 rather than 3.) round(x[, n]) now
delegates to x.__round__([n]) instead of always returning a float. It
generally returns an integer when called with a single argument and a
value of the same type as x when called with two arguments."
2013-08-08 18:25:23 +02:00

112 lines
3.9 KiB
Python

import unittest
if __name__ == '__main__':
import bootstrap
import lesscpy.lessc.utility as utility
class TestUtility(unittest.TestCase):
def testanalyze(self):
test = utility.analyze_number
self.assertEqual((0, ''), test('0'))
self.assertEqual((1, ''), test('1'))
self.assertEqual(type(test('1')[0]), int)
self.assertEqual(type(test('-1')[0]), int)
self.assertEqual((1.0, ''), test('1.0'))
self.assertEqual(type(test('-1.0')[0]), float)
self.assertEqual((0, 'px'), test('0px'))
self.assertEqual((1, 'px'), test('1px'))
self.assertEqual((1.0, 'px'), test('1.0px'))
self.assertEqual((0, 'px'), test('-0px'))
self.assertEqual((-1, 'px'), test('-1px'))
self.assertEqual(type(test('-1px')[0]), int)
self.assertEqual((-1.0, 'px'), test('-1.0px'))
self.assertEqual(type(test('-1.0px')[0]), float)
self.assertRaises(SyntaxError, test, 'gg')
self.assertRaises(SyntaxError, test, '-o')
self.assertRaises(SyntaxError, test, '')
def testsplit_unit(self):
test = utility.split_unit
self.assertEqual(('', ''), test(None))
self.assertEqual(('', ''), test(False))
self.assertEqual(('', ''), test('qwerty'))
self.assertEqual(('1', ''), test(1))
self.assertEqual(('1', ''), test('1'))
self.assertEqual(('1', 'px'), test('1px'))
self.assertEqual(('-1', 'px'), test('-1px'))
def testis_int(self):
test = utility.is_int
self.assertTrue(test(1))
self.assertTrue(test('1'))
self.assertTrue(test('-1'))
self.assertTrue(test(-1))
self.assertFalse(test(False))
self.assertFalse(test(None))
self.assertFalse(test(0.0))
def testis_float(self):
test = utility.is_float
self.assertFalse(test(1))
self.assertFalse(test('1'))
self.assertFalse(test(False))
self.assertFalse(test(None))
self.assertTrue(test(0.0))
self.assertTrue(test(-0.0))
self.assertTrue(test('77.0565'))
self.assertTrue(test('-0.0'))
def testis_color(self):
test = utility.is_color
self.assertTrue(test('#123'))
self.assertTrue(test('#123456'))
self.assertTrue(test('#Df3'))
self.assertTrue(test('#AbCdEf'))
self.assertFalse(test('#AbCdEg'))
self.assertFalse(test('#h12345'))
self.assertFalse(test('#12345'))
self.assertFalse(test('AbCdEf'))
self.assertFalse(test(''))
self.assertFalse(test('.925'))
self.assertFalse(test(False))
self.assertFalse(test([]))
def testis_variable(self):
test = utility.is_variable
self.assertTrue(test('@var'))
self.assertTrue(test('-@var'))
self.assertFalse(test('var'))
self.assertFalse(test(''))
self.assertFalse(test(False))
self.assertFalse(test([]))
def testwith_unit(self):
test = utility.with_unit
self.assertEqual('1px', test((1, 'px')))
self.assertEqual('1px', test(1, 'px'))
self.assertEqual('1.0px', test(1.0, 'px'))
self.assertEqual('0.0px', test('.0', 'px'))
self.assertEqual('0.6px', test(.6, 'px'))
self.assertEqual('1', test(1))
self.assertEqual('1', test(1, None))
self.assertEqual('1', test(1,))
def test_convergent_round(self):
test = utility.convergent_round
self.assertEqual(-4, test(-4.5))
self.assertEqual(-4, test(-3.5))
self.assertEqual(-2, test(-2.5))
self.assertEqual(-2, test(-1.5))
self.assertEqual(0, test(-0.5))
self.assertEqual(0, test(0.5))
self.assertEqual(2, test(1.5))
self.assertEqual(2, test(2.5))
self.assertEqual(3.0, test(10.0 / 3, 0))
self.assertEqual(4, test(3.5))
self.assertEqual(4, test(4.5))
if __name__ == '__main__':
unittest.main()