3b68d76a9ddfd86f8f739b322ee5e36e1d81cae2
[platform/core/uifw/dali-core.git] / automated-tests / src / dali-unmanaged / utc-Dali-Random.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include <iostream>
19
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
23
24 using namespace Dali;
25
26
27 int UtcDaliRandomRangeMethod(void)
28 {
29   TestApplication application; // Reset all test adapter return codes
30
31   float a=0, b=1;
32   for(size_t i=0; i<100; i++)
33   {
34     float r = Dali::Random::Range(a, b);
35     DALI_TEST_CHECK(r >= a && r <= b);
36   }
37
38   a=100; b=-100;
39   for(size_t i=0; i<100; i++)
40   {
41     float r = Dali::Random::Range(a, b);
42     DALI_TEST_CHECK(r >= b && r <= a);
43   }
44   END_TEST;
45 }
46
47
48 int UtcDaliRandomAxisMethod(void)
49 {
50   TestApplication application; // Reset all test adapter return codes
51
52   for(size_t i=0; i<100; i++)
53   {
54     Vector4 axis = Dali::Random::Axis();
55     DALI_TEST_EQUALS(axis.Length(), 1.0f, 0.0001f, TEST_LOCATION);
56   }
57   END_TEST;
58 }
59
60 int UtcDaliRandomChanceMethod(void)
61 {
62   int bin_zero=0, bin_one=0;
63
64   for(size_t i=0; i<100000; i++)
65   {
66     bool chance = Dali::Random::Chance();
67     if(chance)
68     {
69       bin_one++;
70     }
71     else
72     {
73       bin_zero++;
74     }
75   }
76   // Check distribution
77   DALI_TEST_EQUALS((float)bin_zero / (float)bin_one, 1.0f, 0.1f, TEST_LOCATION);
78
79   bin_zero=0; bin_one = 0;
80   for(size_t i=0; i<100000; i++)
81   {
82     bool chance = Dali::Random::Chance(0.25);
83     if(chance) {bin_one++;} else {bin_zero++;}
84   }
85   // Check distribution
86   DALI_TEST_EQUALS((float)bin_zero / (float)bin_one, 3.0f, 0.1f, TEST_LOCATION);
87
88   bin_zero=0; bin_one = 0;
89   for(size_t i=0; i<100000; i++)
90   {
91     bool chance = Dali::Random::Chance(0.1);
92     if(chance) {bin_one++;} else {bin_zero++;}
93   }
94   // Check distribution
95   DALI_TEST_EQUALS((float)bin_zero / (float)bin_one, 9.0f, 0.1f, TEST_LOCATION);
96   END_TEST;
97 }