2020-06-03 05:22:11 -07:00
|
|
|
using System;
|
|
|
|
using System.Collections;
|
|
|
|
|
|
|
|
using static Tests.ExtensionMethods.ClassB;
|
|
|
|
|
|
|
|
namespace Tests
|
|
|
|
{
|
|
|
|
class ExtensionMethods
|
|
|
|
{
|
|
|
|
public static int Remove(this String str, float val, float val2)
|
|
|
|
{
|
|
|
|
return 123;
|
|
|
|
}
|
|
|
|
|
|
|
|
class ClassA
|
|
|
|
{
|
|
|
|
public static void Test()
|
|
|
|
{
|
|
|
|
Test.Assert("Abc".Remove(1.2f, 2.3f) == 123);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public class ClassB
|
|
|
|
{
|
|
|
|
public static int Flop(this String str, int a)
|
|
|
|
{
|
|
|
|
return a + 1000;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public static void TestBasics()
|
|
|
|
{
|
|
|
|
ClassA.Test();
|
|
|
|
|
|
|
|
Test.Assert("Test".Flop(234) == 1234);
|
|
|
|
|
|
|
|
List<int> iList = scope .();
|
|
|
|
iList.Add(3);
|
|
|
|
iList.Add(20);
|
|
|
|
iList.Add(100);
|
|
|
|
|
|
|
|
Test.Assert(iList.Total() == 123);
|
2020-12-01 11:35:10 -08:00
|
|
|
|
|
|
|
float a = 1.2f;
|
|
|
|
float b = 2.3f;
|
|
|
|
Test.Assert(a.CompareIt(b) < 0);
|
2020-06-03 05:22:11 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static
|
|
|
|
{
|
2020-12-01 11:35:10 -08:00
|
|
|
public static int CompareIt<T>(this T self, T other)
|
|
|
|
where bool: operator T < T
|
|
|
|
{
|
|
|
|
if(self < other)
|
|
|
|
return -1;
|
|
|
|
else if(self > other)
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2020-08-10 17:02:48 -07:00
|
|
|
public static T Total<T>(this List<T> list) where T : operator T + T
|
2020-06-03 05:22:11 -07:00
|
|
|
{
|
|
|
|
T total = default;
|
|
|
|
for (let val in list)
|
|
|
|
total += val;
|
|
|
|
return total;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|