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_Q8.20
     33 
     34 List of tested functions :
     35 --------------------------
     36     - [setParameter]  function
     37     - [getParameter] function
     38 
     39 Initial Settings :
     40 ------------------
     41     FP32_Q8.20 :
     42         - size = 32 bits
     43         - 8 integer bits, 20 fractionnal bits
     44         - range : [-256, 255.999999]
     45 
     46 Test cases :
     47 ------------
     48     - FP32_Q8.20 parameter min value = -256
     49     - FP32_Q8.20 parameter min value out of bounds = -500
     50     - FP32_Q8.20 parameter max value = 255.999999
     51     - FP32_Q8.20 parameter max value out of bounds = 3200.8888
     52     - FP32_Q8.20 parameter in nominal case = -128.123456
     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_Q8.20 - range [-256,255,999999046]
     61 class TestCases(PfwTestCase):
     62     def setUp(self):
     63         self.param_name = "/Test/Test/TEST_DIR/FP32_Q8.20"
     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_Q8.20 in nominal case = -128.123456
     72         ------------------------------------------------
     73             Test case description :
     74             ~~~~~~~~~~~~~~~~~~~~~~~
     75                 - set FP32_Q8.20 parameter in nominal case = -128.123456
     76             Tested commands :
     77             ~~~~~~~~~~~~~~~~~
     78                 - [setParameter] function
     79             Used commands :
     80             ~~~~~~~~~~~~~~~
     81                 - [getParameter] function
     82             Expected result :
     83             ~~~~~~~~~~~~~~~~~
     84                 - FP32_Q8.20 parameter set to -128.123456
     85                 - Blackboard and filesystem values checked
     86         """
     87         log.D(self.test_Nominal_Case.__doc__)
     88         log.I("FP32_Q8.20 parameter in nominal case = -128.123456")
     89         value = "-128.123456"
     90         hex_value = "0xbff03298"
     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"
     94                                   % (self.param_name, err))
     95         assert out == "Done", log.F("when setting parameter %s : %s"
     96                                   % (self.param_name, out))
     97         #Check parameter value on blackboard
     98         out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
     99         assert err == None, log.E("when setting parameter %s : %s"
    100                                   % (self.param_name, err))
    101         assert round(float(out),6) == float(value), log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s"
    102                                                           % (self.param_name, value, out))
    103         #Check parameter value on filesystem
    104         assert open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error")
    105         log.I("test OK")
    106 
    107     def test_TypeMin(self):
    108         """
    109         Testing FP32_Q8.20 minimal value = -256
    110         ---------------------------------------
    111             Test case description :
    112             ~~~~~~~~~~~~~~~~~~~~~~~
    113                 - set FP32_Q8.20 parameter min value = -256
    114             Tested commands :
    115             ~~~~~~~~~~~~~~~~~
    116                 - [setParameter] function
    117             Used commands :
    118             ~~~~~~~~~~~~~~~
    119                 - [getParameter] function
    120             Expected result :
    121             ~~~~~~~~~~~~~~~~~
    122                 - FP32_Q8.20 parameter set to -256
    123                 - Blackboard and filesystem values checked
    124         """
    125         log.D(self.test_TypeMin.__doc__)
    126         log.I("FP32_Q8.20 parameter min value = -256")
    127         value = "-256"
    128         hex_value = "0x80000000"
    129         #Set parameter value
    130         out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
    131         assert err == None, log.E("when setting parameter %s : %s"
    132                                   % (self.param_name, err))
    133         assert out == "Done", log.F("when setting parameter %s : %s"
    134                                   % (self.param_name, out))
    135         #Check parameter value on blackboard
    136         out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
    137         assert err == None, log.E("when setting parameter %s : %s" % (self.param_name, err))
    138         assert round(float(out),6) == float(value), log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s"
    139                                                           % (self.param_name, value, out))
    140         #Check parameter value on filesystem
    141         assert open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error")
    142         log.I("test OK")
    143 
    144     def test_TypeMin_Overflow(self):
    145         """
    146         Testing FP32_Q8.20 parameter value out of negative range
    147         --------------------------------------------------------
    148             Test case description :
    149             ~~~~~~~~~~~~~~~~~~~~~~~
    150                 - set FP32_Q8.20 to -500
    151             Tested commands :
    152             ~~~~~~~~~~~~~~~~~
    153                 - [setParameter] function
    154             Used commands :
    155             ~~~~~~~~~~~~~~~
    156                 - [getParameter] function
    157             Expected result :
    158             ~~~~~~~~~~~~~~~~~
    159                 - error detected
    160                 - FP32_Q8.20 parameter not updated
    161                 - Blackboard and filesystem values checked
    162         """
    163         log.D(self.test_TypeMin_Overflow.__doc__)
    164         log.I("FP32_Q8.20 parameter min value out of bounds = -500")
    165         value = "-500"
    166         param_check = open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1]
    167         #Set parameter value
    168         out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False)
    169         assert err == None, log.E("when setting parameter %s : %s"
    170                                   % (self.param_name, err))
    171         assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds"
    172                                     % (self.param_name))
    173         #Check parameter value on filesystem
    174         assert open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change")
    175         log.I("test OK")
    176 
    177     def test_TypeMax(self):
    178         """
    179         Testing FP32_Q8.20 parameter maximum value
    180         ------------------------------------------
    181             Test case description :
    182             ~~~~~~~~~~~~~~~~~~~~~~~
    183                 - set FP32_Q8.20 to 255.999999
    184             Tested commands :
    185             ~~~~~~~~~~~~~~~~~
    186                 - [setParameter] function
    187             Used commands :
    188             ~~~~~~~~~~~~~~~
    189                 - [getParameter] function
    190             Expected result :
    191             ~~~~~~~~~~~~~~~~~
    192                 - FP32_Q8.20 parameter set to 255.999999
    193                 - Blackboard and filesystem values checked
    194         """
    195         log.D(self.test_TypeMax.__doc__)
    196         log.I("FP32_Q8.20 parameter max value = 255.999999")
    197         value = "255.999999"
    198         hex_value = "0x7ffffff8"
    199         #Set parameter value
    200         out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
    201         assert err == None, log.E("when setting parameter %s : %s"
    202                                   % (self.param_name, err))
    203         assert out == "Done", log.F("when setting parameter %s : %s"
    204                                   % (self.param_name, out))
    205         #Check parameter value on blackboard
    206         out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
    207         assert err == None, log.E("when setting parameter %s : %s"
    208                                   % (self.param_name, err))
    209         assert round(float(out),6) == float(value), log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s"
    210                                                           % (self.param_name, value, out))
    211         #Check parameter value on filesystem
    212         assert open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error")
    213         log.I("test OK")
    214 
    215     def test_TypeMax_Overflow(self):
    216         """
    217         Testing FP32_Q8.20 parameter value out of positive range
    218         --------------------------------------------------------
    219             Test case description :
    220             ~~~~~~~~~~~~~~~~~~~~~~~
    221                 - set FP32_Q8.20 to 3200.8888
    222             Tested commands :
    223             ~~~~~~~~~~~~~~~~~
    224                 - [setParameter] function
    225             Used commands :
    226             ~~~~~~~~~~~~~~~
    227                 - [getParameter] function
    228             Expected result :
    229             ~~~~~~~~~~~~~~~~~
    230                 - error detected
    231                 - FP32_Q8.20 parameter not updated
    232                 - Blackboard and filesystem values checked
    233         """
    234         log.D(self.test_TypeMax_Overflow.__doc__)
    235         log.I("FP32_Q8.20 parameter max value out of bounds = 3200.8888")
    236         value = "3200.8888"
    237         param_check = open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1]
    238         #Set parameter value
    239         out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False)
    240         assert err == None, log.E("when setting parameter %s : %s"
    241                                   % (self.param_name, err))
    242         assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds" % (self.param_name))
    243         #Check parameter value on filesystem
    244         assert open(os.environ["PFW_RESULT"] + "/FP32_Q8.20").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change")
    245         log.I("test OK")
    246