first commit

This commit is contained in:
2025-07-06 00:23:46 +02:00
commit 38f50c8819
1788 changed files with 112878 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using NitroxModel.DataStructures.Util;
namespace Nitrox.Test.Helper.Faker;
public class NitroxOptionalFaker : NitroxFaker, INitroxFaker
{
private readonly Func<HashSet<Type>, object> generateAction;
public NitroxOptionalFaker(Type type)
{
OutputType = type.GenericTypeArguments[0];
generateAction = (typeTree) =>
{
MethodInfo castMethod = CastMethodBase.MakeGenericMethod(OutputType);
object castedObject = castMethod.Invoke(null, new[] { GetOrCreateFaker(OutputType).GenerateUnsafe(typeTree) });
Type optionalType = typeof(Optional<>).MakeGenericType(OutputType);
return Activator.CreateInstance(optionalType, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, new[] { castedObject }, null);
};
}
public INitroxFaker[] GetSubFakers() => new[] { GetOrCreateFaker(OutputType) };
public object GenerateUnsafe(HashSet<Type> typeTree) => generateAction.Invoke(typeTree);
}