Test that arrays work in integration test
Leave out checks for byte[] for now, because it requires some
non-trivial patches to libbinder.
Bug: 25241875
Test: integration tests and unittests pass
Change-Id: I8e0b3c9c84a309a224f0c1e9877634bffe052fcd
diff --git a/tests/aidl_test_client.cpp b/tests/aidl_test_client.cpp
index 89cb6b8..b5f800c 100644
--- a/tests/aidl_test_client.cpp
+++ b/tests/aidl_test_client.cpp
@@ -71,7 +71,7 @@
}
bool ConfirmPrimitiveRepeat(const sp<ITestService>& s) {
- cout << "Confirming passing and returning primitives." << endl;
+ cout << "Confirming passing and returning primitives works." << endl;
if (!RepeatPrimitive(s, &ITestService::RepeatBoolean, true) ||
!RepeatPrimitive(s, &ITestService::RepeatByte, int8_t{-128}) ||
@@ -101,6 +101,58 @@
return true;
}
+template <typename T>
+bool ReverseArray(const sp<ITestService>& service,
+ status_t(ITestService::*func)(const vector<T>&,
+ vector<T>*,
+ vector<T>*),
+ vector<T> input) {
+ vector<T> actual_reversed;
+ vector<T> actual_repeated;
+ status_t status = (*service.*func)(input, &actual_repeated, &actual_reversed);
+ if (status != OK) {
+ cerr << "Failed to repeat array. status=" << status << "." << endl;
+ return false;
+ }
+ if (input != actual_repeated) {
+ cerr << "Repeated version of array did not match" << endl;
+ cerr << "input.size()=" << input.size()
+ << " repeated.size()=" << actual_repeated.size() << endl;
+ return false;
+ }
+ std::reverse(input.begin(), input.end());
+ if (input != actual_reversed) {
+ cerr << "Reversed version of array did not match" << endl;
+ return false;
+ }
+ return true;
+}
+
+bool ConfirmReverseArrays(const sp<ITestService>& s) {
+ cout << "Confirming passing and returning arrays works." << endl;
+
+ if (!ReverseArray(s, &ITestService::ReverseBoolean,
+ {true, false, false}) ||
+ !ReverseArray(s, &ITestService::ReverseByte,
+ {int8_t{-128}, int8_t{0}, int8_t{127}}) ||
+ !ReverseArray(s, &ITestService::ReverseChar,
+ {char16_t{'A'}, char16_t{'B'}, char16_t{'C'}}) ||
+ !ReverseArray(s, &ITestService::ReverseInt,
+ {1, 2, 3}) ||
+ !ReverseArray(s, &ITestService::ReverseLong,
+ {-1ll, 0ll, int64_t{1ll << 60}}) ||
+ !ReverseArray(s, &ITestService::ReverseFloat,
+ {-0.3f, -0.7f, 8.0f}) ||
+ !ReverseArray(s, &ITestService::ReverseDouble,
+ {1.0/3.0, 1.0/7.0, 42.0}) ||
+ !ReverseArray(s, &ITestService::ReverseString,
+ {String16{"f"}, String16{"a"}, String16{"b"}})) {
+ return false;
+ }
+
+ return true;
+}
+
} // namespace
int main(int /* argc */, char * /* argv */ []) {
@@ -110,5 +162,7 @@
if (!ConfirmPrimitiveRepeat(service)) return 1;
+ if (!ConfirmReverseArrays(service)) return 1;
+
return 0;
}