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