public object Generate(Type baseType)
        {
            if (baseTypesGenerators.TryGetValue(baseType, out IBaseTypeGenerator baseTypeGenerator))
            {
                Array result = Array.CreateInstance(baseType, (byte)byteValueGenerator.Generate());

                for (int i = 0; i < result.Length; i++)
                {
                    result.SetValue(baseTypeGenerator.Generate(), i);
                }

                return(result);
            }

            else
            {
                if (genericTypesGenerators.TryGetValue(baseType.GetGenericTypeDefinition(), out IGenericTypeGenerator genericTypeGenerator))
                {
                    Array result = Array.CreateInstance(baseType, (byte)byteValueGenerator.Generate());

                    for (int i = 0; i < result.Length; i++)
                    {
                        result.SetValue(genericTypeGenerator.Generate(baseType.GetGenericArguments()[0]), i);
                    }

                    return(result);
                }
                else
                {
                    if (!(genericTypesGenerators.TryGetValue(baseType.GetGenericTypeDefinition(), out genericTypeGenerator)) &&
                        !(baseTypesGenerators.TryGetValue(baseType, out baseTypeGenerator)))
                    {
                        Array result = Array.CreateInstance(baseType, (byte)byteValueGenerator.Generate());

                        for (int i = 0; i < result.Length; i++)
                        {
                            result.SetValue(Generate(baseType.GetElementType()), i);
                        }

                        return(result);
                    }
                    else
                    {
                        return(Array.CreateInstance(baseType, 0));
                    }
                }
            }
        }
Beispiel #2
0
        public object Generate(Type baseType)
        {
            IList result = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(baseType));

            if (baseTypesGenerators.TryGetValue(baseType, out IBaseTypeGenerator baseTypeGenerator))
            {
                byte listSize = (byte)byteValueGenerator.Generate();

                for (int i = 0; i < listSize; i++)
                {
                    result.Add(baseTypeGenerator.Generate());
                }
            }
            else
            {
                if (baseType.IsArray)
                {
                    byte listSize = (byte)byteValueGenerator.Generate();

                    for (int i = 0; i < listSize; i++)
                    {
                        result.Add(Generate(baseType.GetElementType()));
                    }
                }
                else
                {
                    byte listSize = (byte)byteValueGenerator.Generate();
                    // IArrayGenerator arrayTypeGenerator = new SingleRankArrayGenerator();
                    //SingleRankArrayGenerator arrayGenerator = new SingleRankArrayGenerator(baseTypesGenerators,genericTypesGenerators);
                    for (int i = 0; i < listSize; i++)

                    {
                        result.Add(Generate(baseType.GetGenericArguments()[0]));
                    }
                }
            }
            return(result);
        }
Beispiel #3
0
        public object Generate(Type type)
        {
            IList result = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(type));

            if (_baseGenerators.TryGetValue(type, out IBaseGenerator baseGenerator))
            {
                byte listSize = (byte)_byteValueGenerator.Generate();
                for (int i = 0; i < listSize; i++)
                {
                    result.Add(baseGenerator.Generate());
                }
            }
            return(result);
        }
Beispiel #4
0
 public object Generate(Type type)
 {
     if (_baseGenerators.TryGetValue(type, out IBaseGenerator baseTypeGenerator))
     {
         Array result = Array.CreateInstance(type, (byte)_byteValueGenerator.Generate());
         for (int i = 0; i < result.Length; i++)
         {
             result.SetValue(baseTypeGenerator.Generate(), i);
         }
         return(result);
     }
     else
     {
         return(Array.CreateInstance(type, 0));
     }
 }