From fe2b0983553f88370ce6a317ef7bb4b2baec42b3 Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Tue, 23 Aug 2016 16:50:55 -0700 Subject: [PATCH] Tests for Reference Support. Bug: 31300815 pointer support Bug: 31349114 nested types Bug: 31757611 Parcel ref# cap Test: `make hidl_test && adb sync && adb shell hidl_test` Only works with a kernel patch. Change-Id: I48351b1bf861a4d2d77f823f7242524156cde1e7 --- tests/pointer/1.0/Android.mk | 53 +++++++++++++++++++++++++ tests/pointer/1.0/IGraph.hal | 57 +++++++++++++++++++++++++++ tests/pointer/1.0/IPointer.hal | 89 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 tests/pointer/1.0/Android.mk create mode 100644 tests/pointer/1.0/IGraph.hal create mode 100644 tests/pointer/1.0/IPointer.hal diff --git a/tests/pointer/1.0/Android.mk b/tests/pointer/1.0/Android.mk new file mode 100644 index 00000000..d1c23bf2 --- /dev/null +++ b/tests/pointer/1.0/Android.mk @@ -0,0 +1,53 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE := android.hardware.tests.pointer@1.0 +LOCAL_MODULE_CLASS := SHARED_LIBRARIES + +intermediates := $(local-generated-sources-dir) + +HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX) + +# +# Build IGraph.hal +# +GEN := $(intermediates)/android/hardware/tests/pointer/1.0/GraphAll.cpp +$(GEN): $(HIDL) +$(GEN): PRIVATE_HIDL := $(HIDL) +$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IGraph.hal +$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates) +$(GEN): PRIVATE_CUSTOM_TOOL = \ + $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \ + -Lc++ -randroid.hardware:hardware/interfaces \ + android.hardware.tests.pointer@1.0::IGraph + +$(GEN): $(LOCAL_PATH)/IGraph.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build IPointer.hal +# +GEN := $(intermediates)/android/hardware/tests/pointer/1.0/PointerAll.cpp +$(GEN): $(HIDL) +$(GEN): PRIVATE_HIDL := $(HIDL) +$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IPointer.hal +$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates) +$(GEN): PRIVATE_CUSTOM_TOOL = \ + $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \ + -Lc++ -randroid.hardware:hardware/interfaces \ + android.hardware.tests.pointer@1.0::IPointer + +$(GEN): $(LOCAL_PATH)/IPointer.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates) +LOCAL_SHARED_LIBRARIES := \ + libhidl \ + libhwbinder \ + libutils \ + libcutils \ + +LOCAL_MULTILIB := both +include $(BUILD_SHARED_LIBRARY) diff --git a/tests/pointer/1.0/IGraph.hal b/tests/pointer/1.0/IGraph.hal new file mode 100644 index 00000000..0853745d --- /dev/null +++ b/tests/pointer/1.0/IGraph.hal @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.tests.pointer@1.0; + +interface IGraph { + + struct Node { + int32_t data; + }; + struct Edge { + ref left; + ref right; + }; + struct Graph { + vec nodes; + vec edges; + }; + + struct Theta { + int32_t data; + }; + struct Alpha { + ref s_ptr; + }; + struct Beta { + ref s_ptr; + }; + struct Gamma { + ref a_ptr; + ref b_ptr; + }; + + passANode(Node n); + passAGraph(Graph g); + passTwoGraphs(ref g1, ref g2); + giveAGraph() generates (Graph g); + passAGamma(Gamma c); + passASimpleRef(ref a); + passASimpleRefS(ref s); + giveASimpleRef() generates (ref a); + + getErrors() generates (int32_t errors); +}; diff --git a/tests/pointer/1.0/IPointer.hal b/tests/pointer/1.0/IPointer.hal new file mode 100644 index 00000000..e68fb31a --- /dev/null +++ b/tests/pointer/1.0/IPointer.hal @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.tests.pointer@1.0; + +interface IPointer { + // type declarations + struct Sam { int32_t data; }; + struct Ada { ref s_ptr; }; + struct Bob { ref a_ptr; ref s_ptr; }; + struct Cin { Ada a; ref b_ptr; }; + struct Dom { Cin c; }; + + typedef ref Int32Ptr; + typedef ref SamPtr; + + struct Ptr { + ref[5] ptr_array; + ref array_ptr; + Int32Ptr int_ptr; + ref int_array_ptr; + ref[5] int_ptr_array; + ref str_ref; + vec> a_ptr_vec; + ref> a_vec_ptr; + }; + + // test cases + foo1(Sam s, SamPtr s_ptr); + foo2(Sam s, Ada a); + foo3(Sam s, Ada a, Bob b); + foo4(ref s_ptr); + foo5(Ada a, Bob b); + foo6(ref a_ptr); + foo7(ref a_ptr, ref b_ptr); + foo8(Dom d); + foo9(ref str_ref); + foo10(vec> s_ptr_vec); + foo11(ref> s_vec_ptr); + foo12(ref s_array_ref); + foo13(ref[5] s_ref_array); + foo14(ref>> s_3ptr); + foo15(ref>> i_3ptr); + foo16(Ptr p); + foo17(ref p); + foo18(ref str_ref, ref str_ref2, string str); + foo19(ref> a_vec_ref, vec a_vec, ref> a_vec_ref2); + foo20(vec> s_ptr_vec); + foo21(ref a_array_ptr); + foo22(ref[1][2][3] a_ptr_array); + + bar1() generates (Sam s, ref s_ptr); + bar2() generates (Sam s, Ada a); + bar3() generates (Sam s, Ada a, Bob b); + bar4() generates (ref s_ptr); + bar5() generates (Ada a, Bob b); + bar6() generates (ref a_ptr); + bar7() generates (ref a_ptr, ref b_ptr); + bar8() generates (Dom d); + bar9() generates (ref str_ref); + bar10() generates (vec> s_ptr_vec); + bar11() generates (ref> s_vec_ptr); + bar12() generates (ref s_array_ref); + bar13() generates (ref[5] s_ref_array); + bar14() generates (ref>> s_3ptr); + bar15() generates (ref>> i_3ptr); + bar16() generates (Ptr p); + bar17() generates (ref p); + bar18() generates (ref str_ref, ref str_ref2, string str); + bar19() generates (ref> a_vec_ref, vec a_vec, ref> a_vec_ref2); + bar20() generates (vec> s_ptr_vec); + bar21() generates (ref a_array_ptr); + bar22() generates (ref[1][2][3] a_ptr_array); + + getErrors() generates(int32_t errors); +}; -- 2.11.0