summaryrefslogtreecommitdiff
path: root/objective-c
diff options
context:
space:
mode:
Diffstat (limited to 'objective-c')
-rw-r--r--objective-c/test/Ice/operations/OperationsTest.ice69
-rw-r--r--objective-c/test/Ice/operations/TestI.m45
-rw-r--r--objective-c/test/Ice/operations/Twoways.m84
3 files changed, 198 insertions, 0 deletions
diff --git a/objective-c/test/Ice/operations/OperationsTest.ice b/objective-c/test/Ice/operations/OperationsTest.ice
index 0f33cefb761..f64d9f5d5ce 100644
--- a/objective-c/test/Ice/operations/OperationsTest.ice
+++ b/objective-c/test/Ice/operations/OperationsTest.ice
@@ -277,6 +277,9 @@ class MyClass
ByteBoolD opByteBoolD1(ByteBoolD opByteBoolD1);
StringS opStringS2(StringS stringS);
ByteBoolD opByteBoolD2(ByteBoolD byteBoolD);
+
+ StringS opStringLiterals();
+ StringS opWStringLiterals();
//
// Operations below are specific to Objective-C
@@ -314,4 +317,70 @@ class MyDerivedClass extends MyClass
MyStruct1 opMyStruct1(MyStruct1 c);
};
+
+//
+// String literals
+//
+
+const string s0 = "\u005c"; // backslash
+const string s1 = "\u0041"; // A
+const string s2 = "\u0049\u0063\u0065"; // Ice
+const string s3 = "\u004121"; // A21
+const string s4 = "\\u0041 \\U00000041"; // \\u0041 \\U00000041
+const string s5 = "\u00FF"; // ÿ
+const string s6 = "\u03FF"; // GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL (U+03FF)
+const string s7 = "\u05F0"; // HEBREW LIGATURE YIDDISH DOUBLE VAV (U+05F0)
+const string s8 = "\U00010000"; // LINEAR B SYLLABLE B008 A (U+10000)
+const string s9 = "\U0001F34C"; // BANANA (U+1F34C)
+const string s10 = "\u0DA7"; // Sinhala Letter Alpapraana Ttayanna
+
+const string sw0 = "\U0000005c"; // backslash
+const string sw1 = "\U00000041"; // A
+const string sw2 = "\U00000049\U00000063\U00000065"; // Ice
+const string sw3 = "\U0000004121"; // A21
+const string sw4 = "\\u0041 \\U00000041"; // \\u0041 \\U00000041
+const string sw5 = "\U000000FF"; // ÿ
+const string sw6 = "\U000003FF"; // GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL (U+03FF)
+const string sw7 = "\U000005F0"; // HEBREW LIGATURE YIDDISH DOUBLE VAV (U+05F0)
+const string sw8 = "\U00010000"; // LINEAR B SYLLABLE B008 A (U+10000)
+const string sw9 = "\U0001F34C"; // BANANA (U+1F34C)
+const string sw10 = "\U00000DA7"; // Sinhala Letter Alpapraana Ttayanna
+
+/**
+\' single quote byte 0x27 in ASCII encoding
+\" double quote byte 0x22 in ASCII encoding
+\? question mark byte 0x3f in ASCII encoding
+\\ backslash byte 0x5c in ASCII encoding
+\a audible bell byte 0x07 in ASCII encoding
+\b backspace byte 0x08 in ASCII encoding
+\f form feed - new page byte 0x0c in ASCII encoding
+\n line feed - new line byte 0x0a in ASCII encoding
+\r carriage return byte 0x0d in ASCII encoding
+\t horizontal tab byte 0x09 in ASCII encoding
+\v vertical tab byte 0x0b in ASCII encoding
+**/
+
+const string ss0 = "\'\"\?\\\a\b\f\n\r\t\v";
+const string ss1 = "\u0027\u0022\u003f\u005c\u0007\u0008\u000c\u000a\u000d\u0009\u000b";
+const string ss2 = "\U00000027\U00000022\U0000003f\U0000005c\U00000007\U00000008\U0000000c\U0000000a\U0000000d\U00000009\U0000000b";
+
+const string ss3 = "\\\\U\\u\\"; /* \\U\u\ */
+const string ss4 = "\\\u0041\\"; /* \A\ */
+const string ss5 = "\\u0041\\"; /* \u0041\ */
+
+//
+// ÿ - Unicode Character 'LATIN SMALL LETTER Y WITH DIAERESIS' (U+00FF)
+// Ā - Unicode Character 'LATIN CAPITAL LETTER A WITH MACRON' (U+0100)
+// ἀ - Unicode Character 'GREEK SMALL LETTER ALPHA WITH PSILI' (U+1F00)
+// 𐆔 - Unicode Character 'ROMAN DIMIDIA SEXTULA SIGN' (U+10194)
+// 𐅪 - Unicode Character 'GREEK ACROPHONIC THESPIAN ONE HUNDRED' (U+1016A)
+// 𐆘 - Unicode Character 'ROMAN SESTERTIUS SIGN' (U+10198)
+// 🍀 - Unicode Character 'FOUR LEAF CLOVER' (U+1F340)
+// 🍁 - Unicode Character 'MAPLE LEAF' (U+1F341)
+// 🍂 - Unicode Character 'FALLEN LEAF' (U+1F342)
+// 🍃 - Unicode Character 'LEAF FLUTTERING IN WIND' (U+1F343)
+const string su0 = "ÿĀἀ𐆔𐅪𐆘🍀🍁🍂🍃";
+const string su1 = "\u00FF\u0100\u1F00\U00010194\U0001016A\U00010198\U0001F340\U0001F341\U0001F342\U0001F343";
+const string su2 = "\U000000FF\U00000100\U00001F00\U00010194\U0001016A\U00010198\U0001F340\U0001F341\U0001F342\U0001F343";
+
};
diff --git a/objective-c/test/Ice/operations/TestI.m b/objective-c/test/Ice/operations/TestI.m
index 18ce9629512..0eb40c665f3 100644
--- a/objective-c/test/Ice/operations/TestI.m
+++ b/objective-c/test/Ice/operations/TestI.m
@@ -719,6 +719,51 @@
return p;
}
+-(TestOperationsStringS *) opStringLiterals:(ICECurrent *)current
+{
+ TestOperationsStringS *s = [NSArray arrayWithObjects:TestOperationss0,
+ TestOperationss1,
+ TestOperationss2,
+ TestOperationss3,
+ TestOperationss4,
+ TestOperationss5,
+ TestOperationss6,
+ TestOperationss7,
+ TestOperationss8,
+ TestOperationss9,
+ TestOperationss10,
+
+ TestOperationssw0,
+ TestOperationssw1,
+ TestOperationssw2,
+ TestOperationssw3,
+ TestOperationssw4,
+ TestOperationssw5,
+ TestOperationssw6,
+ TestOperationssw7,
+ TestOperationssw8,
+ TestOperationssw9,
+ TestOperationssw10,
+
+ TestOperationsss0,
+ TestOperationsss1,
+ TestOperationsss2,
+ TestOperationsss3,
+ TestOperationsss4,
+ TestOperationsss5,
+
+ TestOperationssu0,
+ TestOperationssu1,
+ TestOperationssu2,
+ nil];
+ return s;
+}
+
+-(TestOperationsStringS *) opWStringLiterals:(ICECurrent *)current
+{
+ return [self opStringLiterals:current];
+}
+
-(TestOperationsMyClass1*) opMyClass1:(TestOperationsMyClass1*)p current:(ICECurrent*)current
{
return p;
diff --git a/objective-c/test/Ice/operations/Twoways.m b/objective-c/test/Ice/operations/Twoways.m
index ab98727344e..77977e0c243 100644
--- a/objective-c/test/Ice/operations/Twoways.m
+++ b/objective-c/test/Ice/operations/Twoways.m
@@ -81,6 +81,90 @@ void
twoways(id<ICECommunicator> communicator, id<TestOperationsMyClassPrx> p)
{
{
+ TestOperationsStringS *literals = [p opStringLiterals];
+
+ test([TestOperationss0 isEqualToString:[literals objectAtIndex: 0]]);
+
+
+ test([TestOperationss0 isEqualToString:@"\\"] &&
+ [TestOperationss0 isEqualToString:TestOperationssw0] &&
+ [TestOperationss0 isEqualToString:[literals objectAtIndex:0]] &&
+ [TestOperationss0 isEqualToString:[literals objectAtIndex:11]]);
+
+ test([TestOperationss1 isEqualToString:@"A"] &&
+ [TestOperationss1 isEqualToString:TestOperationssw1] &&
+ [TestOperationss1 isEqualToString:[literals objectAtIndex:1]] &&
+ [TestOperationss1 isEqualToString:[literals objectAtIndex:12]]);
+
+ test([TestOperationss2 isEqualToString:@"Ice"] &&
+ [TestOperationss2 isEqualToString:TestOperationssw2] &&
+ [TestOperationss2 isEqualToString:[literals objectAtIndex:2]] &&
+ [TestOperationss2 isEqualToString:[literals objectAtIndex:13]]);
+
+ test([TestOperationss3 isEqualToString:@"A21"] &&
+ [TestOperationss3 isEqualToString:TestOperationssw3] &&
+ [TestOperationss3 isEqualToString:[literals objectAtIndex:3]] &&
+ [TestOperationss3 isEqualToString:[literals objectAtIndex:14]]);
+
+ test([TestOperationss4 isEqualToString:@"\\u0041 \\U00000041"] &&
+ [TestOperationss4 isEqualToString:TestOperationssw4] &&
+ [TestOperationss4 isEqualToString:[literals objectAtIndex:4]] &&
+ [TestOperationss4 isEqualToString:[literals objectAtIndex:15]]);
+
+ test([TestOperationss5 isEqualToString:@"ÿ"] &&
+ [TestOperationss5 isEqualToString:TestOperationssw5] &&
+ [TestOperationss5 isEqualToString:[literals objectAtIndex:5]] &&
+ [TestOperationss5 isEqualToString:[literals objectAtIndex:16]]);
+
+ test([TestOperationss6 isEqualToString:@"Ͽ"] &&
+ [TestOperationss6 isEqualToString:TestOperationssw6] &&
+ [TestOperationss6 isEqualToString:[literals objectAtIndex:6]] &&
+ [TestOperationss6 isEqualToString:[literals objectAtIndex:17]]);
+
+ test([TestOperationss7 isEqualToString:@"װ"] &&
+ [TestOperationss7 isEqualToString:TestOperationssw7] &&
+ [TestOperationss7 isEqualToString:[literals objectAtIndex:7]] &&
+ [TestOperationss7 isEqualToString:[literals objectAtIndex:18]]);
+
+ test([TestOperationss8 isEqualToString:@"\U00010000"] &&
+ [TestOperationss8 isEqualToString:TestOperationssw8] &&
+ [TestOperationss8 isEqualToString:[literals objectAtIndex:8]] &&
+ [TestOperationss8 isEqualToString:[literals objectAtIndex:19]]);
+
+ test([TestOperationss9 isEqualToString:@"\U0001F34C"] &&
+ [TestOperationss9 isEqualToString:TestOperationssw9] &&
+ [TestOperationss9 isEqualToString:[literals objectAtIndex:9]] &&
+ [TestOperationss9 isEqualToString:[literals objectAtIndex:20]]);
+
+ test([TestOperationss10 isEqualToString:@"ට"] &&
+ [TestOperationss10 isEqualToString:TestOperationssw10] &&
+ [TestOperationss10 isEqualToString:[literals objectAtIndex:10]] &&
+ [TestOperationss10 isEqualToString:[literals objectAtIndex:21]]);
+
+ test([TestOperationsss0 isEqualToString:@"\'\"\?\\\a\b\f\n\r\t\v"] &&
+ [TestOperationsss0 isEqualToString:TestOperationsss1] &&
+ [TestOperationsss0 isEqualToString:TestOperationsss2] &&
+ [TestOperationsss0 isEqualToString:[literals objectAtIndex:22]] &&
+ [TestOperationsss0 isEqualToString:[literals objectAtIndex:23]] &&
+ [TestOperationsss0 isEqualToString:[literals objectAtIndex:24]]);
+
+ test([TestOperationsss3 isEqualToString:@"\\\\U\\u\\"] &&
+ [TestOperationsss3 isEqualToString:[literals objectAtIndex:25]]);
+
+ test([TestOperationsss4 isEqualToString:@"\\A\\"] &&
+ [TestOperationsss4 isEqualToString:[literals objectAtIndex:26]]);
+
+ test([TestOperationsss5 isEqualToString:@"\\u0041\\"] &&
+ [TestOperationsss5 isEqualToString:[literals objectAtIndex:27]]);
+
+ test([TestOperationssu0 isEqualToString:TestOperationssu1] &&
+ [TestOperationssu0 isEqualToString:TestOperationssu1] &&
+ [TestOperationssu0 isEqualToString:[literals objectAtIndex:28]] &&
+ [TestOperationssu0 isEqualToString:[literals objectAtIndex:29]] &&
+ [TestOperationssu0 isEqualToString:[literals objectAtIndex:30]]);
+ }
+
+ {
[p opVoid];
}