From 46a7e0568d2d9486cc7bf2dec3c6e5c5d04f7a10 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 1 Jul 2020 12:06:51 -0700 Subject: [PATCH] Tests for new visibility rules --- IDEHelper/Tests/LibA/src/LibA0.bf | 37 ++++++++++++++++ IDEHelper/Tests/LibB/src/LibB0.bf | 15 +++++++ IDEHelper/Tests/LibC/src/LibC0.bf | 12 ++++++ IDEHelper/Tests/src/MethodSelection.bf | 60 ++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 IDEHelper/Tests/src/MethodSelection.bf diff --git a/IDEHelper/Tests/LibA/src/LibA0.bf b/IDEHelper/Tests/LibA/src/LibA0.bf index 95adad85..70efd4c2 100644 --- a/IDEHelper/Tests/LibA/src/LibA0.bf +++ b/IDEHelper/Tests/LibA/src/LibA0.bf @@ -3,6 +3,11 @@ using System.Collections; namespace LibA { + struct LibAStruct + { + int mA; + } + interface IVal { int Val @@ -33,6 +38,25 @@ namespace LibA { return lhs == rhs; } + + public static int GetOverload0() where T : var + { + T val = default; + return Overload0(val); + } + } + + struct Handler + { + public static int Handle(Object obj) + { + return 0; + } + + public static int HandleT(T val) where T : var + { + return Handle(val); + } } } @@ -74,4 +98,17 @@ class LibClassB { return LibClassA.GetVal3(val); } +} + +static +{ + public static int Overload0(Object a) + { + return 0; + } + + public static int Overload0(int8 a) + { + return 1; + } } \ No newline at end of file diff --git a/IDEHelper/Tests/LibB/src/LibB0.bf b/IDEHelper/Tests/LibB/src/LibB0.bf index b8e89ef7..b947fca0 100644 --- a/IDEHelper/Tests/LibB/src/LibB0.bf +++ b/IDEHelper/Tests/LibB/src/LibB0.bf @@ -1,7 +1,14 @@ +using System; + namespace LibB { class LibB0 { + public static int GetOverload0() where T : var + { + T val = default; + return Overload0(val); + } } } @@ -26,3 +33,11 @@ extension LibClassA return mB; } } + +static +{ + public static int Overload0(int16 a) + { + return 2; + } +} \ No newline at end of file diff --git a/IDEHelper/Tests/LibC/src/LibC0.bf b/IDEHelper/Tests/LibC/src/LibC0.bf index e2884a31..c6b1e981 100644 --- a/IDEHelper/Tests/LibC/src/LibC0.bf +++ b/IDEHelper/Tests/LibC/src/LibC0.bf @@ -2,6 +2,11 @@ namespace LibC { class LibC0 { + public static int GetOverload0() where T : var + { + T val = default; + return Overload0(val); + } } } @@ -21,3 +26,10 @@ extension LibClassA } } +static +{ + public static int Overload0(int32 a) + { + return 3; + } +} \ No newline at end of file diff --git a/IDEHelper/Tests/src/MethodSelection.bf b/IDEHelper/Tests/src/MethodSelection.bf new file mode 100644 index 00000000..629e1eac --- /dev/null +++ b/IDEHelper/Tests/src/MethodSelection.bf @@ -0,0 +1,60 @@ +using System; +using System.Collections; + +namespace LibA +{ + extension Handler + { + public static int Handle(Tests.MethodSelection.StructA val) + { + return 4; + } + + public static int Handle(LibA.LibAStruct val) + { + return 4; + } + + public static int Handle(List val) + { + return 4; + } + } +} + +namespace Tests +{ + class MethodSelection + { + public struct StructA + { + int mA; + } + + [Test] + public static void TestBasics() + { + Test.Assert(LibA.LibA0.GetOverload0() == 1); + Test.Assert(LibA.LibA0.GetOverload0() == 0); + Test.Assert(LibA.LibA0.GetOverload0() == 0); + Test.Assert(LibA.LibA0.GetOverload0() == 0); + + Test.Assert(LibB.LibB0.GetOverload0() == 1); + Test.Assert(LibB.LibB0.GetOverload0() == 2); + Test.Assert(LibB.LibB0.GetOverload0() == 0); + Test.Assert(LibB.LibB0.GetOverload0() == 0); + + Test.Assert(LibC.LibC0.GetOverload0() == 1); + Test.Assert(LibC.LibC0.GetOverload0() == 3); + Test.Assert(LibC.LibC0.GetOverload0() == 3); + Test.Assert(LibC.LibC0.GetOverload0() == 0); + + StructA sa = .(); + List sal = null; + LibA.LibAStruct las = .(); + Test.Assert(LibA.Handler.HandleT(sa) == 4); + Test.Assert(LibA.Handler.HandleT(sal) == 4); + Test.Assert(LibA.Handler.HandleT(las) == 0); + } + } +}