Browse Source

+ some extra (already working) tests for class references

git-svn-id: trunk@15467 -
Jonas Maebe 15 years ago
parent
commit
267cb54cd6
3 changed files with 102 additions and 0 deletions
  1. 2 0
      .gitattributes
  2. 54 0
      tests/test/tobjc34.pp
  3. 46 0
      tests/test/tobjc34a.pp

+ 2 - 0
.gitattributes

@@ -9297,6 +9297,8 @@ tests/test/tobjc31.pp svneol=native#text/plain
 tests/test/tobjc32.pp svneol=native#text/plain
 tests/test/tobjc32a.pp svneol=native#text/plain
 tests/test/tobjc32b.pp svneol=native#text/plain
+tests/test/tobjc34.pp svneol=native#text/plain
+tests/test/tobjc34a.pp svneol=native#text/plain
 tests/test/tobjc4.pp svneol=native#text/plain
 tests/test/tobjc4a.pp svneol=native#text/plain
 tests/test/tobjc5.pp svneol=native#text/plain

+ 54 - 0
tests/test/tobjc34.pp

@@ -0,0 +1,54 @@
+{ %target=darwin }
+{ %cpu=powerpc,powerpc64,i386,x86_64,arm }
+
+{ Written by Jonas Maebe in 2010, released into the public domain }
+
+{$mode objfpc}
+{$modeswitch objectivec1}
+
+type
+  MyOverride = objcclass(NSObject)
+    class procedure testClassOverride; message 'testClassOverride';
+  end;
+
+  MyOverride2 = objcclass(MyOverride)
+    class procedure testClassOverride; override;
+  end;
+
+  tmyoverrideclass = class of NSObject;
+
+var
+  selfshouldbe: tmyoverrideclass;
+
+class procedure MyOverride.testClassOverride;
+begin
+  if (self<>selfshouldbe) then
+    halt(20);
+
+  writeln('MyOverride.testClassOverride');
+end;
+
+class procedure MyOverride2.testClassOverride;
+begin
+  if (self<>selfshouldbe) then
+    halt(21);
+
+  writeln('MyOverride2.testClassOverride');
+end;
+
+var
+  a: MyOverride;
+  classclass: tmyoverrideclass;
+begin
+  classclass:=MyOverride;
+  a:=classclass.alloc.init;
+  selfshouldbe:=MyOverride;
+  a.testClassOverride;
+  a.release;
+
+  classclass:=MyOverride2;
+  a:=classclass.alloc.init;
+  selfshouldbe:=MyOverride2;
+  a.testClassOverride;
+  a.release;
+end.

+ 46 - 0
tests/test/tobjc34a.pp

@@ -0,0 +1,46 @@
+{ %fail }
+{ %target=darwin }
+{ %cpu=powerpc,powerpc64,i386,x86_64,arm }
+
+{ Written by Jonas Maebe in 2010, released into the public domain }
+
+{$mode objfpc}
+{$modeswitch objectivec1}
+
+type
+  MyOverride = objcclass(NSObject)
+    class procedure testClassOverride; message 'testClassOverride';
+  end;
+
+  MyOverride2 = objcclass(MyOverride)
+    class procedure testClassOverride; override;
+  end;
+
+  tmyoverrideclass = class of NSObject;
+
+var
+  selfshouldbe: tmyoverrideclass;
+
+class procedure MyOverride.testClassOverride;
+begin
+  if (self<>selfshouldbe) then
+    halt(20);
+
+  writeln('MyOverride.testClassOverride');
+end;
+
+class procedure MyOverride2.testClassOverride;
+begin
+  if (self<>selfshouldbe) then
+    halt(21);
+
+  writeln('MyOverride2.testClassOverride');
+end;
+
+var
+  a: MyOverride;
+  classclass: tmyoverrideclass;
+begin
+  classclass:=MyOverride;
+  a:=classclass.init;
+end.