Add interface minitest, rework s.d.

This commit is contained in:
Christian Kamm
2008-11-30 11:54:18 +01:00
parent f14d97d786
commit c451f100f5
2 changed files with 65 additions and 7 deletions

59
tests/mini/interface8.d Normal file
View File

@@ -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);
}

View File

@@ -52,8 +52,8 @@ void main()
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 @@ void main()
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);