summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2016-04-26 09:00:57 +0200
committerBenoit Foucher <benoit@zeroc.com>2016-04-26 09:00:57 +0200
commitc2ce37b7b0f6fc033cac4d52d460ee2f389d7737 (patch)
treedab204bc1dfd9298c7acb13b9493a210f8c4e978 /cpp/test
parentAdd jquery-cookie to bower dependency (diff)
downloadice-c2ce37b7b0f6fc033cac4d52d460ee2f389d7737.tar.bz2
ice-c2ce37b7b0f6fc033cac4d52d460ee2f389d7737.tar.xz
ice-c2ce37b7b0f6fc033cac4d52d460ee2f389d7737.zip
Fixed ICE-7115 - unmarshalling bug with optional parameters
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/Ice/optional/AllTests.cpp12
-rw-r--r--cpp/test/Ice/optional/Test.ice6
-rw-r--r--cpp/test/Ice/optional/TestAMD.ice6
-rw-r--r--cpp/test/Ice/optional/TestAMDI.cpp7
-rw-r--r--cpp/test/Ice/optional/TestAMDI.h5
-rw-r--r--cpp/test/Ice/optional/TestI.cpp5
-rw-r--r--cpp/test/Ice/optional/TestI.h4
7 files changed, 38 insertions, 7 deletions
diff --git a/cpp/test/Ice/optional/AllTests.cpp b/cpp/test/Ice/optional/AllTests.cpp
index 51a5e264a45..085bf62613a 100644
--- a/cpp/test/Ice/optional/AllTests.cpp
+++ b/cpp/test/Ice/optional/AllTests.cpp
@@ -621,7 +621,7 @@ allTests(const Ice::CommunicatorPtr& communicator, bool)
RecursivePtr outer = new Recursive();
outer->value = recursive1;
initial->pingPong(outer);
-
+
GPtr g = new G();
g->gg1Opt = new G1("gg1Opt");
g->gg2 = new G2(10);
@@ -633,6 +633,16 @@ allTests(const Ice::CommunicatorPtr& communicator, bool)
test(20 == r->gg2Opt.get()->a);
test("gg1" == r->gg1->a);
+ initial->opVoid();
+
+ out = Ice::createOutputStream(communicator);
+ out->startEncapsulation();
+ out->write(1, IceUtil::Optional<int>(15));
+ out->write(2, IceUtil::Optional<string>("test"));
+ out->endEncapsulation();
+ out->finished(inEncaps);
+ test(initial->ice_invoke("opVoid", Ice::Normal, inEncaps, outEncaps));
+
cout << "ok" << endl;
cout << "testing marshalling of large containers with fixed size elements..." << flush;
diff --git a/cpp/test/Ice/optional/Test.ice b/cpp/test/Ice/optional/Test.ice
index 77a0c41665e..87061a2f317 100644
--- a/cpp/test/Ice/optional/Test.ice
+++ b/cpp/test/Ice/optional/Test.ice
@@ -232,7 +232,7 @@ class Initial
optional(1) string opString(optional(2) string p1, out optional(3) string p3);
["cpp:view-type:Util::string_view"] optional(1) string
- opCustomString(["cpp:view-type:Util::string_view"] optional(2) string p1,
+ opCustomString(["cpp:view-type:Util::string_view"] optional(2) string p1,
out ["cpp:view-type:Util::string_view"] optional(3) string p3);
optional(1) MyEnum opMyEnum(optional(2) MyEnum p1, out optional(3) MyEnum p3);
@@ -303,9 +303,11 @@ class Initial
void sendOptionalClass(bool req, optional(1) OneOptional o);
void returnOptionalClass(bool req, out optional(1) OneOptional o);
-
+
G opG(G g);
+ void opVoid();
+
bool supportsRequiredParams();
bool supportsJavaSerializable();
diff --git a/cpp/test/Ice/optional/TestAMD.ice b/cpp/test/Ice/optional/TestAMD.ice
index ed96f12362c..bac3d41df7f 100644
--- a/cpp/test/Ice/optional/TestAMD.ice
+++ b/cpp/test/Ice/optional/TestAMD.ice
@@ -233,7 +233,7 @@ class Initial
optional(1) string opString(optional(2) string p1, out optional(3) string p3);
["cpp:view-type:Util::string_view"] optional(1) string
- opCustomString(["cpp:view-type:Util::string_view"] optional(2) string p1,
+ opCustomString(["cpp:view-type:Util::string_view"] optional(2) string p1,
out ["cpp:view-type:Util::string_view"] optional(3) string p3);
optional(1) MyEnum opMyEnum(optional(2) MyEnum p1, out optional(3) MyEnum p3);
@@ -304,9 +304,11 @@ class Initial
void sendOptionalClass(bool req, optional(1) OneOptional o);
void returnOptionalClass(bool req, out optional(1) OneOptional o);
-
+
G opG(G g);
+ void opVoid();
+
bool supportsRequiredParams();
bool supportsJavaSerializable();
diff --git a/cpp/test/Ice/optional/TestAMDI.cpp b/cpp/test/Ice/optional/TestAMDI.cpp
index 86959335d4e..fea753dfbdd 100644
--- a/cpp/test/Ice/optional/TestAMDI.cpp
+++ b/cpp/test/Ice/optional/TestAMDI.cpp
@@ -385,6 +385,13 @@ InitialI::opG_async(const ::Test::AMD_Initial_opGPtr& cb,
}
void
+InitialI::opVoid_async(const ::Test::AMD_Initial_opVoidPtr& cb,
+ const Ice::Current&)
+{
+ cb->ice_response();
+}
+
+void
InitialI::supportsRequiredParams_async(const ::Test::AMD_Initial_supportsRequiredParamsPtr& cb,
const Ice::Current&)
{
diff --git a/cpp/test/Ice/optional/TestAMDI.h b/cpp/test/Ice/optional/TestAMDI.h
index 4b34ba72b7e..83c12fe1f08 100644
--- a/cpp/test/Ice/optional/TestAMDI.h
+++ b/cpp/test/Ice/optional/TestAMDI.h
@@ -190,11 +190,14 @@ public:
virtual void returnOptionalClass_async(const ::Test::AMD_Initial_returnOptionalClassPtr&,
bool,
const Ice::Current&);
-
+
virtual void opG_async(const ::Test::AMD_Initial_opGPtr&,
const ::Test::GPtr&,
const Ice::Current&);
+ virtual void opVoid_async(const ::Test::AMD_Initial_opVoidPtr&,
+ const Ice::Current&);
+
virtual void supportsRequiredParams_async(const ::Test::AMD_Initial_supportsRequiredParamsPtr&,
const Ice::Current&);
diff --git a/cpp/test/Ice/optional/TestI.cpp b/cpp/test/Ice/optional/TestI.cpp
index c3018841afd..bbf68c7bfc2 100644
--- a/cpp/test/Ice/optional/TestI.cpp
+++ b/cpp/test/Ice/optional/TestI.cpp
@@ -389,6 +389,11 @@ InitialI::opG(const GPtr& g, const Ice::Current&)
return g;
}
+void
+InitialI::opVoid(const Ice::Current&)
+{
+}
+
bool
InitialI::supportsRequiredParams(const Ice::Current&)
{
diff --git a/cpp/test/Ice/optional/TestI.h b/cpp/test/Ice/optional/TestI.h
index 28a9818cc50..081206f3469 100644
--- a/cpp/test/Ice/optional/TestI.h
+++ b/cpp/test/Ice/optional/TestI.h
@@ -184,9 +184,11 @@ public:
virtual void sendOptionalClass(bool, const IceUtil::Optional<Test::OneOptionalPtr>&, const Ice::Current&);
virtual void returnOptionalClass(bool, IceUtil::Optional<Test::OneOptionalPtr>&, const Ice::Current&);
-
+
virtual ::Test::GPtr opG(const ::Test::GPtr& g, const Ice::Current&);
+ virtual void opVoid(const Ice::Current&);
+
virtual bool supportsRequiredParams(const Ice::Current&);
virtual bool supportsJavaSerializable(const Ice::Current&);