metadata_helpers_test.py revision 0b080452cca90f215d10d636abfb47701d7518da
1import unittest 2import itertools 3from unittest import TestCase 4from metadata_model import * 5from metadata_helpers import * 6 7class TestHelpers(TestCase): 8 9 def test_enum_calculate_value_string(self): 10 def compare_values_against_list(expected_list, enum): 11 for (idx, val) in enumerate(expected_list): 12 self.assertEquals(val, 13 enum_calculate_value_string(list(enum.values)[idx])) 14 15 plain_enum = Enum(parent=None, values=['ON', 'OFF']) 16 17 compare_values_against_list(['0', '1'], 18 plain_enum) 19 20 ### 21 labeled_enum = Enum(parent=None, values=['A', 'B', 'C'], ids={ 22 'A': '12345', 23 'B': '0xC0FFEE', 24 'C': '0xDEADF00D' 25 }) 26 27 compare_values_against_list(['12345', '0xC0FFEE', '0xDEADF00D'], 28 labeled_enum) 29 30 ### 31 mixed_enum = Enum(parent=None, 32 values=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 33 ids={ 34 'C': '0xC0FFEE', 35 'E': '123', 36 'G': '0xDEADF00D' 37 }) 38 39 expected_values = ['0', '1', '0xC0FFEE', '0xC0FFEF', '123', '124', 40 '0xDEADF00D', 41 '0xDEADF00E'] 42 43 compare_values_against_list(expected_values, mixed_enum) 44 45 def test_enumerate_with_last(self): 46 empty_list = [] 47 48 for (x, y) in enumerate_with_last(empty_list): 49 self.fail("Should not return anything for empty list") 50 51 single_value = [1] 52 for (x, last) in enumerate_with_last(single_value): 53 self.assertEquals(1, x) 54 self.assertEquals(True, last) 55 56 multiple_values = [4, 5, 6] 57 lst = list(enumerate_with_last(multiple_values)) 58 self.assertListEqual([(4, False), (5, False), (6, True)], lst) 59 60 def test_wbr(self): 61 wbr_string = "<wbr/>" 62 wbr_gen = itertools.repeat(wbr_string) 63 64 # No special characters, do nothing 65 self.assertEquals("no-op", wbr("no-op")) 66 # Insert WBR after characters in [ '.', '/', '_' ] 67 self.assertEquals("word.{0}".format(wbr_string), wbr("word.")) 68 self.assertEquals("word/{0}".format(wbr_string), wbr("word/")) 69 self.assertEquals("word_{0}".format(wbr_string), wbr("word_")) 70 71 self.assertEquals("word.{0}break".format(wbr_string), wbr("word.break")) 72 self.assertEquals("word/{0}break".format(wbr_string), wbr("word/break")) 73 self.assertEquals("word_{0}break".format(wbr_string), wbr("word_break")) 74 75 # Test words with more components 76 self.assertEquals("word_{0}break_{0}again".format(wbr_string), 77 wbr("word_break_again")) 78 self.assertEquals("word_{0}break_{0}again_{0}emphasis".format(wbr_string), 79 wbr("word_break_again_emphasis")) 80 81 # Words with 2 or less subcomponents are ignored for the capital letters 82 self.assertEquals("word_{0}breakIgnored".format(wbr_string), 83 wbr("word_breakIgnored")) 84 self.assertEquals("wordIgnored".format(wbr_string), 85 wbr("wordIgnored")) 86 87 # Words with at least 3 sub components get word breaks before caps 88 self.assertEquals("word_{0}break_{0}again{0}Capitalized".format(wbr_string), 89 wbr("word_break_againCapitalized")) 90 self.assertEquals("word.{0}break.{0}again{0}Capitalized".format(wbr_string), 91 wbr("word.break.againCapitalized")) 92 self.assertEquals("a.{0}b{0}C.{0}d{0}E.{0}f{0}G".format(wbr_string), 93 wbr("a.bC.dE.fG")) 94 95 # Don't be overly aggressive with all caps 96 self.assertEquals("TRANSFORM_{0}MATRIX".format(wbr_string), 97 wbr("TRANSFORM_MATRIX")) 98 99 self.assertEquals("SCENE_{0}MODE_{0}FACE_{0}PRIORITY".format(wbr_string), 100 wbr("SCENE_MODE_FACE_PRIORITY")) 101 102 self.assertEquals("android.{0}color{0}Correction.{0}mode is TRANSFORM_{0}MATRIX.{0}".format(wbr_string), 103 wbr("android.colorCorrection.mode is TRANSFORM_MATRIX.")) 104 105 self.assertEquals("The overrides listed for SCENE_{0}MODE_{0}FACE_{0}PRIORITY are ignored".format(wbr_string), 106 wbr("The overrides listed for SCENE_MODE_FACE_PRIORITY are ignored")); 107 108if __name__ == '__main__': 109 unittest.main() 110