Home | History | Annotate | Download | only in scripts
      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