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""" 32Fixed-Point parameter type testcases - FP8_Q0.7 33 34List of tested functions : 35-------------------------- 36 - [setParameter] function 37 - [getParameter] function 38 39Initial Settings : 40------------------ 41 FP8_Q0.7 : 42 - size = 8 bits 43 - 0 integer bits, 7 fractionnal bits 44 - range : [-1, 0.992188] 45 46Test 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""" 54import commands 55import unittest 56from Util.PfwUnitTestLib import PfwTestCase 57from Util import ACTLogging 58log=ACTLogging.Logger() 59 60# Test of type FP8_Q0.7 - range [-1, 0.992188] 61class TestCases(PfwTestCase): 62 def setUp(self): 63 self.param_name = "/Test/Test/TEST_DIR/FP8_Q0.7" 64 self.pfw.sendCmd("setTuningMode", "on") 65 self.type_name = "FP8_Q0.7" 66 67 def tearDown(self): 68 self.pfw.sendCmd("setTuningMode", "off") 69 70 def test_Nominal_Case(self): 71 """ 72 Testing FP8_Q0.7 in nominal case = 0.50 73 --------------------------------------- 74 Test case description : 75 ~~~~~~~~~~~~~~~~~~~~~~~ 76 - set FP8_Q0.7 parameter in nominal case = 0.50 77 Tested commands : 78 ~~~~~~~~~~~~~~~~~ 79 - [setParameter] function 80 Used commands : 81 ~~~~~~~~~~~~~~~ 82 - [getParameter] function 83 Expected result : 84 ~~~~~~~~~~~~~~~~~ 85 - FP8_Q0.7 parameter set to 0.50 86 - Blackboard and filesystem values checked 87 """ 88 log.D(self.test_Nominal_Case.__doc__) 89 value = "0.50" 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 round(float(out), 2) == 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 commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') == hex_value, log.F("FILESYSTEM - parameter update error") 106 log.I("test OK") 107 108 def test_TypeMin(self): 109 """ 110 Testing FP8_Q0.7 minimal value = -1 111 ----------------------------------- 112 Test case description : 113 ~~~~~~~~~~~~~~~~~~~~~~~ 114 - set FP8_Q0.7 parameter min value = -1 115 Tested commands : 116 ~~~~~~~~~~~~~~~~~ 117 - [setParameter] function 118 Used commands : 119 ~~~~~~~~~~~~~~~ 120 - [getParameter] function 121 Expected result : 122 ~~~~~~~~~~~~~~~~~ 123 - FP8_Q0.7 parameter set to -1 124 - Blackboard and filesystem values checked 125 """ 126 log.D(self.test_TypeMin.__doc__) 127 value = "-1" 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 round(float(out), 6) == 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 commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') == hex_value, log.F("FILESYSTEM - parameter update error") 144 log.I("test OK") 145 146 def test_TypeMin_Overflow(self): 147 """ 148 Testing FP8_Q0.7 parameter value out of negative range 149 ------------------------------------------------------ 150 Test case description : 151 ~~~~~~~~~~~~~~~~~~~~~~~ 152 - set FP8_Q0.7 to -1.00001 153 Tested commands : 154 ~~~~~~~~~~~~~~~~~ 155 - [setParameter] function 156 Used commands : 157 ~~~~~~~~~~~~~~~ 158 - [getParameter] function 159 Expected result : 160 ~~~~~~~~~~~~~~~~~ 161 - error detected 162 - FP8_Q0.7 parameter not updated 163 - Blackboard and filesystem values checked 164 """ 165 log.D(self.test_TypeMin_Overflow.__doc__) 166 value = "-1.000001" 167 param_check = commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') 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) 171 assert err == None, log.E("when setting parameter %s : %s" 172 % (self.param_name, err)) 173 assert out != "Done", log.F("Error not detected when setting parameter %s out of bounds" 174 % (self.param_name)) 175 #Check parameter value on filesystem 176 assert commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') == param_check, log.F("FILESYSTEM - Forbiden parameter change") 177 log.I("test OK") 178 179 @unittest.expectedFailure 180 def test_TypeMax(self): 181 """ 182 Testing FP8_Q0.7 parameter maximum value 183 ---------------------------------------- 184 Test case description : 185 ~~~~~~~~~~~~~~~~~~~~~~~ 186 - set FP8_Q0.7 to 0.992188 187 Tested commands : 188 ~~~~~~~~~~~~~~~~~ 189 - [setParameter] function 190 Used commands : 191 ~~~~~~~~~~~~~~~ 192 - [getParameter] function 193 Expected result : 194 ~~~~~~~~~~~~~~~~~ 195 - FP8_Q0.7 parameter set to 0.992188 196 - Blackboard and filesystem values checked 197 """ 198 log.D(self.test_TypeMax.__doc__) 199 value = "0.992188" 200 hex_value = "0x7f" 201 log.I("Setting %s to value %s" % (self.type_name, value)) 202 #Set parameter value 203 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 204 assert err == None, log.E("when setting parameter %s : %s" 205 % (self.param_name, err)) 206 assert out == "Done", log.F("when setting parameter %s : %s" 207 % (self.param_name, out)) 208 #Check parameter value on blackboard 209 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 210 assert err == None, log.E("when setting parameter %s : %s" 211 % (self.param_name, err)) 212 assert round(float(out), 6) == float(value), "ERROR : BLACKBOARD - Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out) 213 #Check parameter value on filesystem 214 assert commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') == hex_value, "ERROR : FILESYSTEM - parameter update error" 215 log.I("test OK") 216 217 def test_TypeMax_Overflow(self): 218 """ 219 Testing FP8_Q0.7 parameter value out of positive range 220 ------------------------------------------------------ 221 Test case description : 222 ~~~~~~~~~~~~~~~~~~~~~~~ 223 - set FP8_Q0.7 to 0.992189 224 Tested commands : 225 ~~~~~~~~~~~~~~~~~ 226 - [setParameter] function 227 Used commands : 228 ~~~~~~~~~~~~~~~ 229 - [getParameter] function 230 Expected result : 231 ~~~~~~~~~~~~~~~~~ 232 - error detected 233 - FP8_Q0.7 parameter not updated 234 - Blackboard and filesystem values checked 235 """ 236 log.D(self.test_TypeMax_Overflow.__doc__) 237 value = "0.992189" 238 param_check = commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') 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) 242 assert err == None, log.E("when setting parameter %s : %s" 243 % (self.param_name, err)) 244 assert out != "Done", log.F("Error not detected when setting parameter %s out of bounds" 245 % (self.param_name)) 246 #Check parameter value on filesystem 247 assert commands.getoutput('cat $PFW_RESULT/FP8_Q0.7') == param_check, log.F("FILESYSTEM - Forbiden parameter change") 248 log.I("test OK") 249