1 #ifndef ANDROID_HIDL_TEST_FOO_HELPER_H
2 #define ANDROID_HIDL_TEST_FOO_HELPER_H
3 #include <string>
4 #include <android/hardware/tests/foo/1.0/IFoo.h>
5 #include <utils/Timers.h>
6 
7 namespace android {
8 
9 using std::to_string;
10 using hardware::hidl_string;
11 using hardware::hidl_vec;
12 using hardware::hidl_array;
13 using hardware::tests::foo::V1_0::IFoo;
14 
15 static constexpr nsecs_t DELAY_S = 1;
16 static constexpr nsecs_t DELAY_NS = seconds_to_nanoseconds(DELAY_S);
17 static constexpr nsecs_t TOLERANCE_NS = milliseconds_to_nanoseconds(10);
18 static constexpr nsecs_t ONEWAY_TOLERANCE_NS = milliseconds_to_nanoseconds(1);
19 
20 std::string to_string(const IFoo::StringMatrix5x3 &M);
21 std::string to_string(const IFoo::StringMatrix3x5 &M);
22 // Add quotes around s. For testing purposes only.
23 std::string to_string(const hidl_string &s);
24 
25 template<typename T>
to_string(const T * elems,size_t n)26 std::string to_string(const T *elems, size_t n) {
27     std::string out;
28     out = "[";
29     for (size_t i = 0; i < n; ++i) {
30         if (i > 0) {
31             out += ", ";
32         }
33         out += to_string(elems[i]);
34     }
35     out += "]";
36 
37     return out;
38 }
39 
40 template<typename T, size_t SIZE>
to_string(const hidl_array<T,SIZE> & array)41 std::string to_string(const hidl_array<T, SIZE> &array) {
42     return to_string(&array[0], SIZE);
43 }
44 
45 template<typename T, size_t SIZE1, size_t SIZE2>
to_string(const hidl_array<T,SIZE1,SIZE2> & array)46 std::string to_string(const hidl_array<T, SIZE1, SIZE2> &array) {
47     std::string out;
48     out = "[";
49     for (size_t i = 0; i < SIZE1; ++i) {
50         if (i > 0) {
51             out += ", ";
52         }
53 
54         out += "[";
55         for (size_t j = 0; j < SIZE2; ++j) {
56             if (j > 0) {
57                 out += ", ";
58             }
59 
60             out += to_string(array[i][j]);
61         }
62         out += "]";
63     }
64     out += "]";
65 
66     return out;
67 }
68 
69 template<typename T>
to_string(const hidl_vec<T> & vec)70 std::string to_string(const hidl_vec<T> &vec) {
71     return to_string(&vec[0], vec.size());
72 }
73 
74 std::string QuuxToString(const IFoo::Quux &val);
75 
76 std::string MultiDimensionalToString(const IFoo::MultiDimensional &val);
77 
78 } // namespace android
79 #endif // ANDROID_HIDL_TEST_TEST_HELPER_H
80