Skip to content

Commit a392223

Browse files
committed
DefaultNodeIdSerializer with defaults in constructor for better testing.
1 parent 27bcec2 commit a392223

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/HotChocolate/Core/src/Types/Types/Relay/Serialization/DefaultNodeIdSerializer.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,22 @@
1010

1111
namespace HotChocolate.Types.Relay;
1212

13-
internal sealed class DefaultNodeIdSerializer(INodeIdValueSerializer[] serializers, int maxIdLength) : INodeIdSerializer
13+
internal sealed class DefaultNodeIdSerializer(INodeIdValueSerializer[]? serializers = null, int maxIdLength = 1024)
14+
: INodeIdSerializer
1415
{
1516
private const byte _delimiter = (byte)':';
1617
private const byte _legacyDelimiter = (byte)'\n';
1718
private const int _stackallocThreshold = 256;
1819
private static readonly Encoding _utf8 = Encoding.UTF8;
1920
private readonly ConcurrentDictionary<string, byte[]> _names = new();
21+
private readonly INodeIdValueSerializer[] _serializers = serializers ??
22+
[
23+
new StringNodeIdValueSerializer(),
24+
new Int16NodeIdValueSerializer(),
25+
new Int32NodeIdValueSerializer(),
26+
new Int64NodeIdValueSerializer(),
27+
new GuidNodeIdValueSerializer()
28+
];
2029

2130
public string Format(string typeName, object internalId)
2231
{
@@ -227,8 +236,8 @@ public NodeId Parse(string formattedId, Type runtimeType)
227236

228237
private INodeIdValueSerializer? TryResolveSerializer(Type type)
229238
{
230-
ref var serializer = ref MemoryMarshal.GetReference(serializers.AsSpan());
231-
ref var end = ref Unsafe.Add(ref serializer, serializers.Length);
239+
ref var serializer = ref MemoryMarshal.GetReference(_serializers.AsSpan());
240+
ref var end = ref Unsafe.Add(ref serializer, _serializers.Length);
232241

233242
while (Unsafe.IsAddressLessThan(ref serializer, ref end))
234243
{

0 commit comments

Comments
 (0)