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
31import commands, string, random
32from Util.PfwUnitTestLib import PfwTestCase
33from Util import ACTLogging
34log=ACTLogging.Logger()
35
36# Test of type UINT8_S - range [-100, 100]
37class TestCases(PfwTestCase):
38
39    def setUp(self):
40        self.param_name = "/Test/Test/TEST_DIR/STR_CHAR128"
41        self.pfw.sendCmd("setTuningMode", "on")
42        self.size_max=128
43
44    def tearDown(self):
45        self.pfw.sendCmd("setTuningMode", "off")
46
47    def test_Digits_String_Case(self):
48        """
49        |============================================================|
50        | Testing data types - String                                |
51        |                      max number of char = 128              |
52        |============================================================|
53        | File    : tSTRING_128.py                                   |
54        | Version : 01                                               |
55        |                                                            |
56        | Test cases :                                               |
57        | - STR_CHAR128 parameter nominal value = string_Conf_0      |
58        | - STR_CHAR128 parameter empty value = ''                   |
59        | - STR_CHAR128 parameter full value = generate randomly 128 |
60        | letters characters                                         |
61        | - STR_CHAR128 parameter space character value = test string|
62        | - STR_CHAR128 parameter full digits value = generate       |
63        | randomly 128 digits char                                   |
64        | - STR_CHAR128 parameter oversize value = generate randomly |
65        | 129 char                                                   |
66        |                                                            |
67        |============================================================|
68        | STR_CHAR128 parameter in digits case = 128 digits char     |
69        |============================================================|
70        | Test Case description :                                    |
71        | - STR_CHAR128 parameter in digit case = 128 digits char    |
72        | Tested commands :                                          |
73        | * setParameter                                             |
74        | - getParameter                                             |
75        | Expected result :                                          |
76        | - STR_CHAR128 parameter set to the same 128 digits char    |
77        |   (blackboard and filesystem values checked)               |
78        |============================================================|
79        """
80        log.D(self.test_Digits_String_Case.__doc__)
81        log.I("STR_CHAR128 parameter initial state = string_Conf_0")
82        value = ""
83        for i in range(self.size_max-1):
84            value=value+str(random.choice(string.digits))
85        #Set parameter value
86        out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
87        assert err == None, log.E("when setting parameter %s -> %s" % (self.param_name, err))
88        assert out == "Done", log.F(out)
89        #Check parameter value on blackboard
90        out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
91        assert err == None, log.E("when getting parameter %s -> %s" % (self.param_name, err))
92        assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out))
93        #Check parameter value on filesystem
94        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == value, log.F("FILESYSTEM : parameter update error")
95
96    def test_Empty_String_Case(self):
97        """
98        |============================================================|
99        | STR_CHAR128 parameter empty string = \'\'                    |
100        |============================================================|
101        | Test Case description :                                    |
102        | - STR_CHAR128 parameter in empty string case = \'\'          |
103        | Tested commands :                                          |
104        | * setParameter                                             |
105        | - getParameter                                             |
106        | Expected result :                                          |
107        | - STR_CHAR128 parameter set empty                          |
108        |   (blackboard and filesystem values checked)               |
109        |============================================================|
110        """
111        log.D(self.test_Empty_String_Case.__doc__)
112        log.I("STR_CHAR128 parameter empty string = \'\'")
113        value = "\"\""
114        #Set parameter value
115        out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
116        assert err == None, log.E("when setting parameter %s -> %s" % (self.param_name, err))
117        assert out == "Done", log.F(out)
118        #Check parameter value on blackboard
119        out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
120        assert err == None, log.E("when getting parameter %s -> %s" % (self.param_name, err))
121        assert out == "", log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out))
122        #Check parameter value on filesystem
123        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == "", log.F("FILESYSTEM : parameter update error")
124
125    def test_OverSize_String_Case(self):
126        """
127        |============================================================|
128        | STR_CHAR128 parameter oversize                             |
129        |============================================================|
130        | Test Case description :                                    |
131        | - STR_CHAR128 parameter in oversize case = 129 random char |
132        | Tested commands :                                          |
133        | * setParameter                                             |
134        | - getParameter                                             |
135        | Expected result :                                          |
136        | - error detected                                           |
137        | - STR_CHAR128 parameter not updated                        |
138        |============================================================|
139        """
140        log.D(self.test_OverSize_String_Case.__doc__)
141        log.I("STR_CHAR128 parameter size max=128 character")
142        value=""
143        for i in range(self.size_max+1):
144            value=value+str(random.choice(string.letters))
145        param_check = commands.getoutput('cat $PFW_RESULT/STR_CHAR128')
146        #Set parameter value
147        out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
148        assert err == None, log.E("when setting parameter %s -> %s" % (self.param_name, err))
149        assert out != "Done", log.F("Error not detected when setting parameter %s over size" % (self.param_name))
150        #Check parameter value on filesystem
151        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == param_check, log.F("FILESYSTEM : Forbiden parameter change")
152
153    def test_Full_Letters_String_Case(self):
154        """
155        |============================================================|
156        | STR_CHAR128 parameter full size test case                  |
157        |============================================================|
158        | Test Case description :                                    |
159        | - STR_CHAR128 parameter in fullsize case = 128 random char |
160        | Tested commands :                                          |
161        | * setParameter                                             |
162        | - getParameter                                             |
163        | Expected result :                                          |
164        | - STR_CHAR128 parameter set to the same 128 letters char   |
165        |   (blackboard and filesystem values checked)               |
166        |============================================================|
167        """
168        log.D(self.test_Full_Letters_String_Case.__doc__)
169        log.I("STR_CHAR128 parameter initial state : string")
170        value = ""
171        for i in range(self.size_max-1):
172            value=value+str(random.choice(string.letters))
173        #Set parameter value
174        out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
175        assert err == None, log.E("when setting parameter %s -> %s" % (self.param_name, err))
176        assert out == "Done", log.F("Expected : Done, result : %s" % (out))
177        #Check parameter value on blackboard
178        out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
179        assert err == None, log.E("When setting parameter %s : %s" % (self.param_name, err))
180        assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out))
181        #Check parameter value on filesystem
182        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == value, log.F("FILESYSTEM : parameter update error")
183
184    def test_Nominal_String_Case(self):
185        """
186        |============================================================|
187        | STR_CHAR128 parameter Nominal test case                    |
188        |============================================================|
189        | Test Case description :                                    |
190        | - STR_CHAR128 parameter in nominal case = TestString       |
191        | Tested commands :                                          |
192        | * setParameter                                             |
193        | - getParameter                                             |
194        | Expected result :                                          |
195        | - STR_CHAR128 parameter set to TestString                  |
196        |   (blackboard and filesystem values checked)               |
197        |============================================================|
198        """
199        log.D(self.test_Nominal_String_Case.__doc__)
200        log.I("STR_CHAR128 parameter nominal string = TestString")
201        value = "TestString"
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" % (self.param_name, err))
205        assert out == "Done", log.F("Expected : Done, found : %s" % (out))
206        #Check parameter value on blackboard
207        out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
208        assert err == None, log.E("When setting parameter %s -> %s" % (self.param_name, err))
209        assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out))
210        #Check parameter value on filesystem
211        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == value, log.F("FILESYSTEM : parameter update error")
212
213    def test_Punctuation_Empty_Parenthese_String_Case(self):
214        """
215        |============================================================|
216        | STR_CHAR128 parameter empty Parenthese char test case      |
217        |============================================================|
218        | Test Case description :                                    |
219        | - STR_CHAR128 parameter = TestParenthese()                 |
220        | Tested commands :                                          |
221        | * setParameter                                             |
222        | - getParameter                                             |
223        | Expected result :                                          |
224        | - Not Determined now                                       |
225        |============================================================|
226        """
227        log.D(self.test_Punctuation_Empty_Parenthese_String_Case.__doc__)
228        value = "ParentheseTest()"
229        log.I("STR_CHAR128 parameter Parenthese Char = %s" % (value))
230        param_check = commands.getoutput('cat $PFW_RESULT/STR_CHAR128')
231        #Set parameter value
232        out, err = self.pfw.sendCmd("setParameter", self.param_name, "'%s'" % (value))
233        assert err == None, log.E("When setting parameter %s : %s" % (self.param_name, err))
234        assert out == "Done", log.F("Expected : Done, found : %s" % (out))
235        #Get parameter value
236        out, err = self.pfw.sendCmd("getParameter", self.param_name)
237        assert err == None, log.E("When getting parameter %s : %s" % (self.param_name, err))
238        assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out))
239        #Check parameter value on filesystem
240        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == value, log.F("FILESYSTEM : parameter update error")
241
242    def test_Punctuation_Full_Parenthese_String_Case(self):
243        """
244        |============================================================|
245        | STR_CHAR128 parameter full Parenthese char test case       |
246        |============================================================|
247        | Test Case description :                                    |
248        | - STR_CHAR128 parameter = TestParenthese(test)             |
249        | Tested commands :                                          |
250        | * setParameter                                             |
251        | - getParameter                                             |
252        | Expected result :                                          |
253        | - Not Determined now                                       |
254        |============================================================|
255        """
256        log.D(self.test_Punctuation_Full_Parenthese_String_Case.__doc__)
257        value = "ParentheseTest(test)"
258        log.I("STR_CHAR128 parameter Parenthese Char = %s" % (value))
259        param_check = commands.getoutput('cat $PFW_RESULT/STR_CHAR128')
260        #Set parameter value
261        out, err = self.pfw.sendCmd("setParameter", self.param_name, "'%s'" % value)
262        assert err == None, log.E("When setting parameter %s : %s" % (self.param_name, err))
263        assert out == "Done", log.F("Expected : Done, found : %s" % (out))
264        #Get parameter value
265        out, err = self.pfw.sendCmd("getParameter", self.param_name)
266        assert err == None, log.E("When getting parameter %s : %s" % (self.param_name, err))
267        assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value, out))
268        #Check parameter value on filesystem
269        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == value, log.F("FILESYSTEM : parameter update error")
270
271    def test_SpaceChar_String_Case(self):
272        """
273        |============================================================|
274        | STR_CHAR128 parameter space char test case                 |
275        |============================================================|
276        | Test Case description :                                    |
277        | - STR_CHAR128 parameter = Test String                      |
278        | Tested commands :                                          |
279        | * setParameter                                             |
280        | - getParameter                                             |
281        | Expected result :                                          |
282        | - Not Determined now                                       |
283        |============================================================|
284        """
285        log.D(self.test_SpaceChar_String_Case.__doc__)
286        value = "Test String"
287        log.I("STR_CHAR128 parameter Parenthese Char = %s" % (value))
288        value_check = "Test String"
289        #Set parameter value
290        out, err = self.pfw.sendCmd("setParameter", self.param_name, value)
291        assert err == None, log.E("When setting parameter %s : %s" % (self.param_name, err))
292        assert out == "Done", log.F("Expected : Done, found : %s" % (out))
293       #Check parameter value on blackboard
294        out, err = self.pfw.sendCmd("getParameter", self.param_name, "")
295        assert err == None, log.E("When setting parameter %s : %s" % (self.param_name, err))
296        assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" % (self.param_name, value_check, out))
297        #Check parameter value on filesystem
298        assert commands.getoutput('cat $PFW_RESULT/STR_CHAR128') == value_check, log.F("FILESYSTEM : parameter update error")
299