changeset 807:d92acb81a583

Add interface minitest, rework s.d.
author Christian Kamm <kamm incasoftware de>
date Sun, 30 Nov 2008 11:54:18 +0100
parents 96b404ba7eb0
children 4ad1e7b10378
files tests/mini/interface8.d tests/mini/s.d
diffstat 2 files changed, 65 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/mini/interface8.d	Sun Nov 30 11:54:18 2008 +0100
@@ -0,0 +1,59 @@
+interface InputStream
+{
+  void foo();
+}
+
+interface OutputStream
+{
+  void bar();
+}
+
+interface IConduit : InputStream, OutputStream
+{
+  abstract uint bufferSize();
+}
+
+class Conduit : IConduit
+{
+  abstract uint bufferSize();
+  abstract void foo();
+  abstract void bar();
+}
+
+interface Selectable
+{
+  void car();
+}
+
+class DeviceConduit : Conduit, Selectable
+{
+        override uint bufferSize ()
+        {
+                return 1024 * 16;
+        }
+  override void foo() {}
+  override void bar() {}
+  override void car() {}
+  int handle;
+}
+
+class ConsoleConduit : DeviceConduit
+{
+  override void foo() {}
+  bool redirected;
+}
+
+class OtherConduit : Conduit
+{
+  abstract uint bufferSize();
+  override void foo() {}
+  override void bar() {}
+}
+
+void main()
+{
+  auto c = new ConsoleConduit;
+  IConduit ci = c;
+  assert(c.bufferSize == ci.bufferSize);
+}
+
--- a/tests/mini/s.d	Sun Nov 30 11:25:40 2008 +0100
+++ b/tests/mini/s.d	Sun Nov 30 11:54:18 2008 +0100
@@ -52,8 +52,8 @@
             auto ci = c.classinfo;
             printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
             printf("ci.interfaces.length = %lu\n", ci.interfaces.length);
-            printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr);
-            printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr);
+	    foreach (i, iface; ci.interfaces)
+                printf("i[%d] = %.*s\n", i, iface.classinfo.name.length, iface.classinfo.name.ptr);
         }
     }
     {
@@ -62,16 +62,15 @@
             auto ci = c.classinfo;
             printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
             printf("ci.interfaces.length = %lu\n", ci.interfaces.length);
-            printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr);
-            printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr);
-            printf("i[2] = %.*s\n", ci.interfaces[2].classinfo.name.length, ci.interfaces[2].classinfo.name.ptr);
+	    foreach (i, iface; ci.interfaces)
+                printf("i[%d] = %.*s\n", i, iface.classinfo.name.length, iface.classinfo.name.ptr);
         }
-        auto i = cast(InterOne)c;
+        InterOne i = c;
         {
             auto ci = i.classinfo;
             printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
         }
-        auto i2 = cast(Inter2)i;
+        auto i2 = cast(Inter2)c;
         {
             auto ci = i2.classinfo;
             printf("ci = %.*s\n", ci.name.length, ci.name.ptr);