2019-11-17 09:28:39 -08:00
|
|
|
using System;
|
|
|
|
|
|
|
|
namespace Tests
|
|
|
|
{
|
|
|
|
class Generics
|
|
|
|
{
|
|
|
|
class ClassA : IDisposable
|
|
|
|
{
|
|
|
|
public void Dispose()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void DoDispose<T>(mut T val) where T : IDisposable
|
|
|
|
{
|
|
|
|
val.Dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Disposer<T>
|
|
|
|
{
|
|
|
|
static void UseDispose(IDisposable disp)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static void DoDisposeA(mut T val) where T : IDisposable
|
|
|
|
{
|
|
|
|
val.Dispose();
|
|
|
|
UseDispose(val);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void DoDisposeB(mut T val) where T : IDisposable
|
|
|
|
{
|
|
|
|
val.Dispose();
|
|
|
|
}
|
|
|
|
}
|
2020-02-13 07:53:11 -08:00
|
|
|
|
|
|
|
[Test]
|
|
|
|
public static void TestGenericDelegates()
|
|
|
|
{
|
|
|
|
delegate void(String v) dlg = scope => StrMethod;
|
|
|
|
CallGenericDelegate(dlg);
|
|
|
|
CallGenericDelegate<String>(scope => StrMethod);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void CallGenericDelegate<T>(delegate void(T v) dlg)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void StrMethod(String v)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2019-11-17 09:28:39 -08:00
|
|
|
[Test]
|
|
|
|
public static void TestBasics()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2019-11-28 09:11:54 -08:00
|
|
|
|
|
|
|
class ConstGenerics
|
|
|
|
{
|
|
|
|
public static float GetSum<TCount>(float[TCount] vals) where TCount : const int
|
|
|
|
{
|
|
|
|
float total = 0;
|
|
|
|
for (int i < vals.Count)
|
|
|
|
total += vals[i];
|
|
|
|
return total;
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public static void TestBasics()
|
|
|
|
{
|
|
|
|
float[5] fVals = .(10, 20, 30, 40, 50);
|
|
|
|
|
|
|
|
float totals = GetSum(fVals);
|
|
|
|
Test.Assert(totals == 10+20+30+40+50);
|
|
|
|
}
|
|
|
|
}
|
2019-11-17 09:28:39 -08:00
|
|
|
}
|