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