Fix tests for using IBase instead of IBinder.

Echoed interfaces cannot be casted properly, because
interfaceChain cannot be called. So the given vector
of interfaces is re-wrapped. This is temporary; when
b/33173166 is fixed, this change should be reverted.

Test: hidl_test

Generates: b/33173166

Change-Id: I12166f69cf04abf7485dc2455ad731b87c80b3d1
diff --git a/tests/bar/1.0/default/Bar.cpp b/tests/bar/1.0/default/Bar.cpp
index d3f6b91..cac0845 100644
--- a/tests/bar/1.0/default/Bar.cpp
+++ b/tests/bar/1.0/default/Bar.cpp
@@ -122,10 +122,36 @@
     return Void();
 }
 
+// TODO: remove after b/33173166 is fixed.
+struct Simple : public ISimple {
+    Simple(int32_t cookie)
+        : mCookie(cookie) {
+    }
+
+    Return<int32_t> getCookie() override {
+        return mCookie;
+    }
+
+private:
+    int32_t mCookie;
+};
+
+// TODO: use _hidl_cb(in) after b/33173166 is fixed.
 Return<void> Bar::haveAVectorOfGenericInterfaces(
         const hidl_vec<sp<android::hidl::base::V1_0::IBase> > &in,
         haveAVectorOfGenericInterfaces_cb _hidl_cb) {
-    _hidl_cb(in);
+    // _hidl_cb(in);
+    hidl_vec<sp<android::hidl::base::V1_0::IBase> > out;
+    out.resize(in.size());
+    for (size_t i = 0; i < in.size(); ++i) {
+        sp<ISimple> s = ISimple::castFrom(in[i]);
+        if (s.get() == nullptr) {
+            out[i] = new Simple(-1);
+        } else {
+            out[i] = new Simple(s->getCookie());
+        }
+    }
+    _hidl_cb(out);
 
     return Void();
 }