1 #!/usr/bin/env python 2 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 7 """Unittest for ini_editor.py.""" 8 9 10 import logging 11 import os 12 import re 13 import tempfile 14 import unittest 15 16 from ini_editor import Ini 17 18 SAMPLE_INI="""\ 19 [output_source] 20 library=builtin 21 label=source 22 purpose=playback 23 disable=(equal? output_jack "HDMI") 24 output_0={src:0} 25 output_1={src:1} 26 27 [output_sink] 28 library=builtin 29 label=sink 30 purpose=playback 31 disable=(equal? output_jack "HDMI") 32 input_0={dst:0} 33 input_1={dst:1} 34 35 [drc] 36 library=builtin 37 label=drc 38 input_0={src:0} 39 input_1={src:1} 40 output_2={intermediate:0} 41 output_3={intermediate:1} 42 input_4=0 ; f 43 input_5=0 ; enable 44 input_6=-29 ; threshold 45 input_7=3 ; knee 46 input_8=6.677 ; ratio 47 input_9=0.02 ; attack 48 input_10=0.2 ; release 49 input_11=-7 ; boost 50 51 [eq2] 52 library=builtin 53 label=eq2 54 input_0={intermediate:0} 55 input_1={intermediate:1} 56 output_2={dst:0} 57 output_3={dst:1} 58 input_4=6 ; peaking 59 input_5=380 ; freq 60 input_6=3 ; Q 61 input_7=-10 ; gain 62 input_8=6 ; peaking 63 input_9=450 ; freq 64 input_10=3 ; Q 65 input_11=-12 ; gain 66 """ 67 68 SAMPLE_INI_DRC="""\ 69 [drc] 70 library=builtin 71 label=drc 72 input_0={src:0} 73 input_1={src:1} 74 output_2={intermediate:0} 75 output_3={intermediate:1} 76 input_4=0 ; f 77 input_5=0 ; enable 78 input_6=-29 ; threshold 79 input_7=3 ; knee 80 input_8=6.677 ; ratio 81 input_9=0.02 ; attack 82 input_10=0.2 ; release 83 input_11=-7 ; boost 84 85 """ 86 87 SAMPLE_INI_DRC_INSERTED="""\ 88 [drc] 89 library=builtin 90 label=drc 91 input_0={src:0} 92 input_1={src:1} 93 output_2={intermediate:0} 94 output_3={intermediate:1} 95 input_4=1 ; new_parameter 96 input_5=0 ; f 97 input_6=0 ; enable 98 input_7=-29 ; threshold 99 input_8=3 ; knee 100 input_9=6.677 ; ratio 101 input_10=0.02 ; attack 102 input_11=0.2 ; release 103 input_12=-7 ; boost 104 105 """ 106 107 108 class IniTest(unittest.TestCase): 109 """Unittest for Ini class.""" 110 def setUp(self): 111 self.ini_file = tempfile.NamedTemporaryFile(prefix='ini_editor_unittest') 112 with open(self.ini_file.name, 'w') as f: 113 f.write(SAMPLE_INI) 114 self.ini = Ini(self.ini_file.name) 115 116 def tearDown(self): 117 self.ini_file.close() 118 119 def testPrint(self): 120 """Unittest for Print method of Ini class.""" 121 output = self.ini.Print() 122 self.assertEqual(output.getvalue(), SAMPLE_INI) 123 124 def testHasSection(self): 125 """Unittest for HasSection method of Ini class.""" 126 self.assertTrue(self.ini.HasSection('drc')) 127 self.assertFalse(self.ini.HasSection('eq1')) 128 129 def testPrintSection(self): 130 """Unittest for PrintSection method of Ini class.""" 131 output = self.ini.PrintSection('drc') 132 self.assertEqual(output.getvalue(), SAMPLE_INI_DRC) 133 134 def testInsertLineToSection(self): 135 """Unittest for InsertLineToSection method of Ini class.""" 136 self.ini.InsertLineToSection('drc', 'input_4=1 ; new_parameter') 137 output = self.ini.PrintSection('drc') 138 self.assertEqual(output.getvalue(), SAMPLE_INI_DRC_INSERTED) 139 140 141 if __name__ == '__main__': 142 logging.basicConfig( 143 format='%(asctime)s:%(levelname)s:%(filename)s:%(lineno)d:%(message)s', 144 level=logging.DEBUG) 145 unittest.main() 146