diff --git a/IDEHelper/Tests/LibA/src/LibA0.bf b/IDEHelper/Tests/LibA/src/LibA0.bf index da00e27a..5d7f2ad5 100644 --- a/IDEHelper/Tests/LibA/src/LibA0.bf +++ b/IDEHelper/Tests/LibA/src/LibA0.bf @@ -1,8 +1,31 @@ using System; namespace LibA { + interface IVal + { + int Val + { + get; set; + } + } + class LibA0 { + public static int GetVal(T val) where T : IVal + { + return val.Val; + } + + public static void Dispose(mut T val) where T : IDisposable + { + val.Dispose(); + } + + public static void Alloc() where T : new, delete + { + let t = new T(); + delete t; + } } } diff --git a/IDEHelper/Tests/src/Generics.bf b/IDEHelper/Tests/src/Generics.bf index eea5eeb5..4e087acd 100644 --- a/IDEHelper/Tests/src/Generics.bf +++ b/IDEHelper/Tests/src/Generics.bf @@ -4,8 +4,42 @@ namespace Tests { class Generics { - class ClassA : IDisposable + class ClassA : IDisposable, LibA.IVal { + int LibA.IVal.Val + { + get + { + return 123; + } + + set + { + + } + } + + void IDisposable.Dispose() + { + + } + } + + class ClassB : IDisposable, LibA.IVal + { + public int Val + { + get + { + return 234; + } + + set + { + + } + } + public void Dispose() { @@ -55,7 +89,16 @@ namespace Tests [Test] public static void TestBasics() { + ClassA ca = scope .(); + ClassB cb = scope .(); + Test.Assert(LibA.LibA0.GetVal(ca) == 123); + Test.Assert(LibA.LibA0.GetVal(cb) == 234); + LibA.LibA0.Dispose(ca); + LibA.LibA0.Dispose(cb); + + LibA.LibA0.Alloc(); + LibA.LibA0.Alloc(); } }