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