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