summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/Ice/objects/AllTests.cpp2
-rw-r--r--cpp/test/Ice/objects/TestI.cpp1
-rw-r--r--cpp/test/Ice/optional/AllTests.cpp28
-rw-r--r--cpp/test/Ice/optional/Test.ice5
-rw-r--r--cpp/test/Ice/optional/TestI.cpp11
-rw-r--r--cpp/test/Ice/optional/TestI.h4
6 files changed, 49 insertions, 2 deletions
diff --git a/cpp/test/Ice/objects/AllTests.cpp b/cpp/test/Ice/objects/AllTests.cpp
index 04b56d01a83..c4522b7a5e0 100644
--- a/cpp/test/Ice/objects/AllTests.cpp
+++ b/cpp/test/Ice/objects/AllTests.cpp
@@ -215,7 +215,7 @@ allTests(const Ice::CommunicatorPtr& communicator, bool collocated)
initial->setI(h);
cout << "ok" << endl;
- cout << "testing sequences..." << flush;
+ cout << "testing sequences... " << flush;
BaseSeq inS, outS, retS;
retS = initial->opBaseSeq(inS, outS);
diff --git a/cpp/test/Ice/objects/TestI.cpp b/cpp/test/Ice/objects/TestI.cpp
index 246864b2019..12cd0e1915c 100644
--- a/cpp/test/Ice/objects/TestI.cpp
+++ b/cpp/test/Ice/objects/TestI.cpp
@@ -210,7 +210,6 @@ InitialI::setI(const IPtr&, const Ice::Current&)
{
}
-
BaseSeq
InitialI::opBaseSeq(const BaseSeq& inSeq, BaseSeq& outSeq, const Ice::Current&)
{
diff --git a/cpp/test/Ice/optional/AllTests.cpp b/cpp/test/Ice/optional/AllTests.cpp
index 22c0d3cdb3c..6719dca601e 100644
--- a/cpp/test/Ice/optional/AllTests.cpp
+++ b/cpp/test/Ice/optional/AllTests.cpp
@@ -548,6 +548,19 @@ allTests(const Ice::CommunicatorPtr& communicator, bool collocated)
in->endEncapsulation();
test(obj && dynamic_cast<TestObjectReader*>(obj.get()));
factory->setEnabled(false);
+
+ //
+ // Use the 1.0 encoding with operations whose only class parameters are optional.
+ //
+ IceUtil::Optional<OneOptionalPtr> oo(new OneOptional(53));
+ initial->sendOptionalClass(true, oo);
+ initial->ice_encodingVersion(Ice::Encoding_1_0)->sendOptionalClass(true, oo);
+
+ initial->returnOptionalClass(true, oo);
+ test(oo);
+ initial->ice_encodingVersion(Ice::Encoding_1_0)->returnOptionalClass(true, oo);
+ test(!oo);
+
cout << "ok" << endl;
cout << "testing marshalling of large containers with fixed size elements..." << flush;
@@ -1092,6 +1105,21 @@ allTests(const Ice::CommunicatorPtr& communicator, bool collocated)
test(ex.b == string("test"));
test((*ex.o)->a = 53);
}
+
+ try
+ {
+ //
+ // Use the 1.0 encoding with an exception whose only class members are optional.
+ //
+ initial->ice_encodingVersion(Ice::Encoding_1_0)->
+ opOptionalException(30, string("test"), OneOptionalPtr(new OneOptional(53)));
+ }
+ catch(const OptionalException& ex)
+ {
+ test(!ex.a);
+ test(!ex.b);
+ test(!ex.o);
+ }
}
cout << "ok" << endl;
diff --git a/cpp/test/Ice/optional/Test.ice b/cpp/test/Ice/optional/Test.ice
index baea70cb293..d693ae649a2 100644
--- a/cpp/test/Ice/optional/Test.ice
+++ b/cpp/test/Ice/optional/Test.ice
@@ -138,6 +138,7 @@ class WD
exception OptionalException
{
+ bool req = false;
optional(1) int a = 5;
optional(2) string b;
optional(50) OneOptional o;
@@ -253,6 +254,10 @@ class Initial
void opClassAndUnknownOptional(A p);
+ void sendOptionalClass(bool req, optional(1) OneOptional o);
+
+ void returnOptionalClass(bool req, out optional(1) OneOptional o);
+
bool supportsRequiredParams();
bool supportsJavaSerializable();
diff --git a/cpp/test/Ice/optional/TestI.cpp b/cpp/test/Ice/optional/TestI.cpp
index b40ee6cf67d..f26194e934a 100644
--- a/cpp/test/Ice/optional/TestI.cpp
+++ b/cpp/test/Ice/optional/TestI.cpp
@@ -344,6 +344,17 @@ InitialI::opClassAndUnknownOptional(const APtr& a, const Ice::Current&)
{
}
+void
+InitialI::sendOptionalClass(bool, const Optional<OneOptionalPtr>&, const Ice::Current&)
+{
+}
+
+void
+InitialI::returnOptionalClass(bool, Optional<OneOptionalPtr>& o, const Ice::Current&)
+{
+ o = new OneOptional(53);
+}
+
bool
InitialI::supportsRequiredParams(const Ice::Current&)
{
diff --git a/cpp/test/Ice/optional/TestI.h b/cpp/test/Ice/optional/TestI.h
index 2114639de63..aab81137006 100644
--- a/cpp/test/Ice/optional/TestI.h
+++ b/cpp/test/Ice/optional/TestI.h
@@ -172,6 +172,10 @@ public:
virtual void opClassAndUnknownOptional(const Test::APtr&, const Ice::Current&);
+ virtual void sendOptionalClass(bool, const IceUtil::Optional<Test::OneOptionalPtr>&, const Ice::Current&);
+
+ virtual void returnOptionalClass(bool, IceUtil::Optional<Test::OneOptionalPtr>&, const Ice::Current&);
+
virtual bool supportsRequiredParams(const Ice::Current&);
virtual bool supportsJavaSerializable(const Ice::Current&);