Home | History | Annotate | Download | only in Types
      1 #!/usr/bin/python2
      2 # -*-coding:utf-8 -*
      3 
      4 # Copyright (c) 2011-2015, Intel Corporation
      5 # All rights reserved.
      6 #
      7 # Redistribution and use in source and binary forms, with or without modification,
      8 # are permitted provided that the following conditions are met:
      9 #
     10 # 1. Redistributions of source code must retain the above copyright notice, this
     11 # list of conditions and the following disclaimer.
     12 #
     13 # 2. Redistributions in binary form must reproduce the above copyright notice,
     14 # this list of conditions and the following disclaimer in the documentation and/or
     15 # other materials provided with the distribution.
     16 #
     17 # 3. Neither the name of the copyright holder nor the names of its contributors
     18 # may be used to endorse or promote products derived from this software without
     19 # specific prior written permission.
     20 #
     21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     22 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     23 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     24 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
     25 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     26 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     27 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     28 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     30 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31 
     32 
     33 """
     34 Integer parameter type testcases - UINT16
     35 
     36 List of tested functions :
     37 --------------------------
     38     - [setParameter]  function
     39     - [getParameter] function
     40 
     41 Initial Settings :
     42 ------------------
     43     UINT16 :
     44         - unsigned
     45         - size = 16
     46         - range : [0, 1000]
     47 
     48 Test cases :
     49 ------------
     50     - UINT16 parameter min value = 0
     51     - UINT16 parameter min value out of bounds = -1
     52     - UINT16 parameter max value = 1000
     53     - UINT16 parameter max value out of bounds = 1001
     54     - UINT16 parameter in nominal case = 50
     55 """
     56 import os
     57 import commands
     58 from Util.PfwUnitTestLib import PfwTestCase
     59 from Util import ACTLogging
     60 log=ACTLogging.Logger()
     61 
     62 
     63 # Test of type UINT16 - range [0, 1000]
     64 class TestCases(PfwTestCase):
     65     def setUp(self):
     66         self.param_name = "/Test/Test/TEST_DIR/UINT16"
     67         self.pfw.sendCmd("setTuningMode", "on")
     68 
     69     def tearDown(self):
     70         self.pfw.sendCmd("setTuningMode", "off")
     71 
     72     def test_Nominal_Case(self):
     73         """
     74         Testing UINT16 in nominal case = 50
     75         -----------------------------------
     76             Test case description :
     77             ~~~~~~~~~~~~~~~~~~~~~~~
     78                 - set UINT16 parameter in nominal case = 50
     79             Tested commands :
     80             ~~~~~~~~~~~~~~~~~
     81                 - [setParameter] function
     82             Used commands :
     83             ~~~~~~~~~~~~~~~
     84                 - [getParameter] function
     85             Expected result :
     86             ~~~~~~~~~~~~~~~~~
     87                 - UINT16 parameter set to 50
     88                 - Blackboard and filesystem values checked
     89         """
     90         log.D(self.test_Nominal_Case.__doc__)
     91         log.I("UINT16 parameter in nominal case = 50")
     92         value = "50"
     93         hex_value = "0x32"
     94         #Set parameter value
     95         out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
     96         assert err == None, log.E("when setting parameter %s : %s"
     97                                   % (self.param_name, err))
     98         assert out == "Done", log.F("when setting parameter %s : %s"
     99                                   % (self.param_name, out))
    100         #Check parameter value on blackboard
    101         out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
    102         assert err == None, log.E("when setting parameter %s : %s"
    103                                   % (self.param_name, err))
    104         assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s"
    105                                    % (self.param_name, value, out))
    106         #Check parameter value on filesystem
    107         assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error")
    108         log.I("test OK")
    109 
    110     def test_TypeMin(self):
    111         """
    112         Testing UINT16 minimal value = 0
    113         --------------------------------
    114             Test case description :
    115             ~~~~~~~~~~~~~~~~~~~~~~~
    116                 - set UINT16 parameter min value = 0
    117             Tested commands :
    118             ~~~~~~~~~~~~~~~~~
    119                 - [setParameter] function
    120             Used commands :
    121             ~~~~~~~~~~~~~~~
    122                 - [getParameter] function
    123             Expected result :
    124             ~~~~~~~~~~~~~~~~~
    125                 - UINT16 parameter set to 0
    126                 - Blackboard and filesystem values checked
    127         """
    128         log.D(self.test_TypeMin.__doc__)
    129         log.I("UINT16 parameter min value = 0")
    130         value = "0"
    131         hex_value = "0x0"
    132         #Set parameter value
    133         out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
    134         assert err == None, log.E("when setting parameter %s : %s"
    135                                   % (self.param_name, err))
    136         assert out == "Done", log.F("when setting parameter %s : %s"
    137                                   % (self.param_name, out))
    138         #Check parameter value on blackboard
    139         out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
    140         assert err == None, log.E("when setting parameter %s : %s"
    141                                   % (self.param_name, err))
    142         assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s"
    143                                    % (self.param_name, value, out))
    144         #Check parameter value on filesystem
    145         assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error")
    146         log.I("test OK")
    147 
    148     def test_TypeMin_Overflow(self):
    149         """
    150         Testing UINT16 parameter value out of negative range
    151         ----------------------------------------------------
    152             Test case description :
    153             ~~~~~~~~~~~~~~~~~~~~~~~
    154                 - set UINT16 to -1
    155             Tested commands :
    156             ~~~~~~~~~~~~~~~~~
    157                 - [setParameter] function
    158             Used commands :
    159             ~~~~~~~~~~~~~~~
    160                 - [getParameter] function
    161             Expected result :
    162             ~~~~~~~~~~~~~~~~~
    163                 - error detected
    164                 - UINT16 parameter not updated
    165                 - Blackboard and filesystem values checked
    166         """
    167         log.D(self.test_TypeMin_Overflow.__doc__)
    168         log.I("UINT16 parameter min value out of bounds = -1")
    169         value = "-1"
    170         param_check = open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1]
    171         #Set parameter value
    172         out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False)
    173         assert err == None, log.E("when setting parameter %s : %s"
    174                                   % (self.param_name, err))
    175         assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds"
    176                                     % (self.param_name))
    177         #Check parameter value on filesystem
    178         assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change")
    179         log.I("test OK")
    180 
    181     def test_TypeMax(self):
    182         """
    183         Testing UINT16 parameter maximum value
    184         --------------------------------------
    185             Test case description :
    186             ~~~~~~~~~~~~~~~~~~~~~~~
    187                 - set UINT16 to 1000
    188             Tested commands :
    189             ~~~~~~~~~~~~~~~~~
    190                 - [setParameter] function
    191             Used commands :
    192             ~~~~~~~~~~~~~~~
    193                 - [getParameter] function
    194             Expected result :
    195             ~~~~~~~~~~~~~~~~~
    196                 - UINT16 parameter set to 1000
    197                 - Blackboard and filesystem values checked
    198         """
    199         log.D(self.test_TypeMax.__doc__)
    200         log.I("UINT16 parameter max value = 1000")
    201         value = "1000"
    202         hex_value = "0x3e8"
    203         #Set parameter value
    204         out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
    205         assert err == None, log.E("when setting parameter %s : %s"
    206                                   % (self.param_name, err))
    207         assert out == "Done", log.F("when setting parameter %s : %s"
    208                                   % (self.param_name, out))
    209         #Check parameter value on blackboard
    210         out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
    211         assert err == None, log.E("when setting parameter %s : %s"
    212                                   % (self.param_name, err))
    213         assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s"
    214                                    % (self.param_name, value, out))
    215         #Check parameter value on filesystem
    216         assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error")
    217         log.I("test OK")
    218 
    219     def test_TypeMax_Overflow(self):
    220         """
    221         Testing UINT16 parameter value out of positive range
    222         ----------------------------------------------------
    223             Test case description :
    224             ~~~~~~~~~~~~~~~~~~~~~~~
    225                 - set UINT16 to 1001
    226             Tested commands :
    227             ~~~~~~~~~~~~~~~~~
    228                 - [setParameter] function
    229             Used commands :
    230             ~~~~~~~~~~~~~~~
    231                 - [getParameter] function
    232             Expected result :
    233             ~~~~~~~~~~~~~~~~~
    234                 - error detected
    235                 - UINT16 parameter not updated
    236                 - Blackboard and filesystem values checked
    237         """
    238         log.D(self.test_TypeMax_Overflow.__doc__)
    239         log.I("UINT16 parameter max value out of bounds = 1001")
    240         value = "1001"
    241         param_check = open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1]
    242         #Set parameter value
    243         out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False)
    244         assert err == None, log.E("when setting parameter %s : %s"
    245                                   % (self.param_name, err))
    246         assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds"
    247                                     % (self.param_name))
    248         #Check parameter value on filesystem
    249         assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change")
    250         log.I("test OK")
    251