test_block.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from unittest import TestCase
  2. from block import Block
  3. class TestBlock(TestCase):
  4. def test_constructor(self):
  5. s = '#foo div'
  6. b = Block(s)
  7. self.assertEqual(b.selectors, [s])
  8. self.assertEqual(b.properties, set())
  9. class TestBlockAddProperty(TestCase):
  10. def setUp(self):
  11. self.b = Block('foo')
  12. def test_single_value(self):
  13. self.b.add_property('foo', 'bar')
  14. self.assertEqual(self.b.properties, set([('foo', 'bar')]))
  15. def test_double_value(self):
  16. self.b.add_property('foo', 'bar')
  17. self.b.add_property('foo', 'bar')
  18. self.assertEqual(self.b.properties, set([('foo', 'bar')]))
  19. def test_multiple_values(self):
  20. self.b.add_property('foo', 'bar')
  21. self.b.add_property('foo', 'baz')
  22. self.assertEqual(self.b.properties, set([('foo', 'bar'),
  23. ('foo', 'baz')]))
  24. class TestBlockGenerateCss(TestCase):
  25. def setUp(self):
  26. self.div = Block('div')
  27. self.div.add_property('color', '#000')
  28. self.div.add_property('font-weight', 'bold')
  29. def test_nocompress_empty(self):
  30. div = Block('div')
  31. self.assertEqual(div.generate_css(), 'div {\n}')
  32. def test_nocompress_single_property(self):
  33. div = Block('div')
  34. div.add_property('color', '#000')
  35. self.assertEqualCss(div.generate_css(), '''
  36. div {
  37. color: #000;
  38. }''')
  39. def test_nocompress_multiple_properties(self):
  40. self.assertEqualCss(self.div.generate_css(), '''
  41. div {
  42. color: #000;
  43. font-weight: bold;
  44. }''')
  45. def test_nocompress_multiple_selectors(self):
  46. div = Block('div', 'p')
  47. div.add_property('color', '#000')
  48. self.assertEqualCss(div.generate_css(), '''
  49. div,
  50. p {
  51. color: #000;
  52. }''')
  53. def test_nocompress_multiple_selectors_sorted(self):
  54. self.assertMultiLineEqual(Block('div', 'p').generate_css(),
  55. Block('p', 'div').generate_css())
  56. def test_compress_whitespace(self):
  57. self.assertEqual(self.div.generate_css(compress_whitespace=True),
  58. 'div{color:#000;font-weight:bold}')
  59. def test___str__(self):
  60. self.assertEqual(str(self.div), self.div.generate_css())
  61. def assertEqualCss(self, a, b):
  62. self.assertMultiLineEqual(a, b.strip().replace(' ', '\t'))