diff --git a/csharp/Platform.Data.Doublets.Tests/LinksConstantsTests.cs b/csharp/Platform.Data.Doublets.Tests/LinksConstantsTests.cs index 29c1d4637..0d4d98286 100644 --- a/csharp/Platform.Data.Doublets.Tests/LinksConstantsTests.cs +++ b/csharp/Platform.Data.Doublets.Tests/LinksConstantsTests.cs @@ -1,13 +1,18 @@ using Xunit; +using Platform.Ranges; namespace Platform.Data.Doublets.Tests { public static class LinksConstantsTests { + // TODO: Replace with Range.PositiveInt64 when available in Platform.Ranges + // This represents the range of positive 64-bit integers: [1, long.MaxValue] + private static readonly Range PositiveInt64 = new Range(1UL, (ulong)long.MaxValue); + [Fact] public static void ExternalReferencesTest() { - LinksConstants constants = new LinksConstants((1, long.MaxValue), (long.MaxValue + 1UL, ulong.MaxValue)); + LinksConstants constants = new LinksConstants(PositiveInt64, new Range((ulong)long.MaxValue + 1UL, ulong.MaxValue)); //var minimum = new Hybrid(0, isExternal: true); var minimum = new Hybrid(1, isExternal: true); diff --git a/experiments/Program.cs b/experiments/Program.cs new file mode 100644 index 000000000..1b9e49996 --- /dev/null +++ b/experiments/Program.cs @@ -0,0 +1,71 @@ +using System; +using Platform.Data.Doublets; +using Platform.Data; + +Console.WriteLine("Inspecting LinksConstants constructor"); + +// Try to understand LinksConstants constructor signature +var linksConstantsType = typeof(LinksConstants); +var constructors = linksConstantsType.GetConstructors(); + +Console.WriteLine($"LinksConstants has {constructors.Length} constructor(s):"); + +foreach (var ctor in constructors) +{ + var parameters = ctor.GetParameters(); + Console.WriteLine($"Constructor with {parameters.Length} parameter(s):"); + for (int i = 0; i < parameters.Length; i++) + { + var param = parameters[i]; + Console.WriteLine($" [{i}] {param.Name}: {param.ParameterType}"); + } + Console.WriteLine(); +} + +// Now test the actual working call +Console.WriteLine("Testing working constructor call:"); +try +{ + var constants = new LinksConstants((1, long.MaxValue), (long.MaxValue + 1UL, ulong.MaxValue)); + Console.WriteLine("✓ Working constructor call succeeded"); +} +catch (Exception e) +{ + Console.WriteLine($"✗ Working constructor call failed: {e.Message}"); +} + +// Test the types of the working parameters +var param1 = (1, long.MaxValue); +var param2 = (long.MaxValue + 1UL, ulong.MaxValue); + +Console.WriteLine($"Working param1 type: {param1.GetType()}"); +Console.WriteLine($"Working param2 type: {param2.GetType()}"); + +// Test with explicit Range objects +Console.WriteLine("\nTesting with explicit Range objects:"); + +try +{ + var range1 = new Platform.Ranges.Range(1UL, (ulong)long.MaxValue); + var range2 = new Platform.Ranges.Range((ulong)long.MaxValue + 1UL, ulong.MaxValue); + var constants2 = new LinksConstants(range1, range2); + Console.WriteLine("✓ Explicit Range constructor call succeeded"); +} +catch (Exception e) +{ + Console.WriteLine($"✗ Explicit Range constructor call failed: {e.Message}"); +} + +// Test tuple to Range conversion +Console.WriteLine("\nTesting tuple to Range conversion:"); +Console.WriteLine($"Can (1, long.MaxValue) convert to Range?"); + +try +{ + Platform.Ranges.Range rangeFromTuple1 = (1, long.MaxValue); + Console.WriteLine($"✓ Implicit conversion succeeded: {rangeFromTuple1}"); +} +catch (Exception e) +{ + Console.WriteLine($"✗ Implicit conversion failed: {e.Message}"); +} diff --git a/experiments/experiments.csproj b/experiments/experiments.csproj new file mode 100644 index 000000000..7e678cbeb --- /dev/null +++ b/experiments/experiments.csproj @@ -0,0 +1,18 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + +