]> git.saurik.com Git - apple/objc4.git/blobdiff - test/runtime.m
objc4-680.tar.gz
[apple/objc4.git] / test / runtime.m
index 57003333c0fb6be7807210601c3b56ff1da4f0b0..b4a592cf357a421a28bcf5c718926e4409dba060 100644 (file)
@@ -38,11 +38,26 @@ int main()
 #endif
 
 #define SwiftV1MangledName "_TtC6Module12SwiftV1Class"
+#define SwiftV1MangledName2 "_TtC2Sw13SwiftV1Class2"
+#define SwiftV1MangledName3 "_TtCSs13SwiftV1Class3"
+#define SwiftV1MangledName4 "_TtC6Swiftt13SwiftV1Class4"
 
 #if TEST_SWIFT
 __attribute__((objc_runtime_name(SwiftV1MangledName)))
 @interface SwiftV1Class : TestRoot @end
 @implementation SwiftV1Class @end
+
+__attribute__((objc_runtime_name(SwiftV1MangledName2)))
+@interface SwiftV1Class2 : TestRoot @end
+@implementation SwiftV1Class2 @end
+
+__attribute__((objc_runtime_name(SwiftV1MangledName3)))
+@interface SwiftV1Class3 : TestRoot @end
+@implementation SwiftV1Class3 @end
+
+__attribute__((objc_runtime_name(SwiftV1MangledName4)))
+@interface SwiftV1Class4 : TestRoot @end
+@implementation SwiftV1Class4 @end
 #endif
 
 
@@ -55,6 +70,9 @@ int main()
     int foundTestRoot;
     int foundSub;
     int foundSwiftV1;
+    int foundSwiftV1class2;
+    int foundSwiftV1class3;
+    int foundSwiftV1class4;
     const char **names;
     Dl_info info;
 
@@ -65,7 +83,7 @@ int main()
     names = objc_copyClassNamesForImage(info.dli_fname, &count);
     testassert(names);
 #if TEST_SWIFT
-    testassert(count == 3);
+    testassert(count == 6);
 #else
     testassert(count == 2);
 #endif
@@ -73,15 +91,24 @@ int main()
     foundTestRoot = 0;
     foundSub = 0;
     foundSwiftV1 = 0;
+    foundSwiftV1class2 = 0;
+    foundSwiftV1class3 = 0;
+    foundSwiftV1class4 = 0;
     for (i = 0; i < count; i++) {
         if (0 == strcmp(names[i], "TestRoot")) foundTestRoot++;
         if (0 == strcmp(names[i], "Sub")) foundSub++;
         if (0 == strcmp(names[i], "Module.SwiftV1Class")) foundSwiftV1++;
+        if (0 == strcmp(names[i], "Sw.SwiftV1Class2")) foundSwiftV1class2++;
+        if (0 == strcmp(names[i], "Swift.SwiftV1Class3")) foundSwiftV1class3++;
+        if (0 == strcmp(names[i], "Swiftt.SwiftV1Class4")) foundSwiftV1class4++;
     }
     testassert(foundTestRoot == 1);
     testassert(foundSub == 1);
 #if TEST_SWIFT
     testassert(foundSwiftV1 == 1);
+    testassert(foundSwiftV1class2 == 1);
+    testassert(foundSwiftV1class3 == 1);
+    testassert(foundSwiftV1class4 == 1);
 #endif
     
     
@@ -104,10 +131,16 @@ int main()
     foundTestRoot = 0;
     foundSub = 0;
     foundSwiftV1 = 0;
+    foundSwiftV1class2 = 0;
+    foundSwiftV1class3 = 0;
+    foundSwiftV1class4 = 0;
     for (i = 0; i < count; i++) {
         if (0 == strcmp(class_getName(list[i]), "TestRoot")) foundTestRoot++;
         if (0 == strcmp(class_getName(list[i]), "Sub")) foundSub++;
         if (0 == strcmp(class_getName(list[i]), "Module.SwiftV1Class")) foundSwiftV1++;
+        if (0 == strcmp(class_getName(list[i]), "Sw.SwiftV1Class2")) foundSwiftV1class2++;
+        if (0 == strcmp(class_getName(list[i]), "Swift.SwiftV1Class3")) foundSwiftV1class3++;
+        if (0 == strcmp(class_getName(list[i]), "Swiftt.SwiftV1Class4")) foundSwiftV1class4++;
         // list should be non-meta classes only
         testassert(!class_isMetaClass(list[i]));
     }
@@ -115,6 +148,9 @@ int main()
     testassert(foundSub == 1);
 #if TEST_SWIFT
     testassert(foundSwiftV1 == 1);
+    testassert(foundSwiftV1class2 == 1);
+    testassert(foundSwiftV1class3 == 1);
+    testassert(foundSwiftV1class4 == 1);
 #endif
 
     // fixme check class handler
@@ -122,6 +158,12 @@ int main()
 #if TEST_SWIFT
     testassert(objc_getClass("Module.SwiftV1Class") == [SwiftV1Class class]);
     testassert(objc_getClass(SwiftV1MangledName) == [SwiftV1Class class]);
+    testassert(objc_getClass("Sw.SwiftV1Class2") == [SwiftV1Class2 class]);
+    testassert(objc_getClass(SwiftV1MangledName2) == [SwiftV1Class2 class]);
+    testassert(objc_getClass("Swift.SwiftV1Class3") == [SwiftV1Class3 class]);
+    testassert(objc_getClass(SwiftV1MangledName3) == [SwiftV1Class3 class]);
+    testassert(objc_getClass("Swiftt.SwiftV1Class4") == [SwiftV1Class4 class]);
+    testassert(objc_getClass(SwiftV1MangledName4) == [SwiftV1Class4 class]);
 #endif
     testassert(objc_getClass("SwiftV1Class") == nil);
     testassert(objc_getClass("DoesNotExist") == nil);