mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-20 13:43:13 +01:00
Add interface minitest, rework s.d.
This commit is contained in:
59
tests/mini/interface8.d
Normal file
59
tests/mini/interface8.d
Normal 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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user