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