Beispiel #1
0
        public Faker()
        {
            List <Assembly> Plugins = Plugin.LoadPlugin(Path.GetDirectoryName(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName) + Plugin.path + "ByteGenerator.dll", Path.GetDirectoryName(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName) + Plugin.path + "FloatGenerator.dll");

            Generators = Plugin.GetGenerators(Plugins);
            Generators.Add(typeof(int), new IntGenerator());
            Generators.Add(typeof(bool), new BoolGenerator());
            Generators.Add(typeof(DateTime), new DateTimeGenerator());
            Generators.Add(typeof(char), new CharGenerator());
            Generators.Add(typeof(double), new DoubleGenerator());
            Generators.Add(typeof(long), new LongGenerator());
            Generators.Add(typeof(string), new StringGenerator());
            listGenerator = new ListGenerator(Generators, this);
        }
Beispiel #2
0
        public object Create <T>()
        {
            var type = typeof(T);

            if (_exludedTypes.Contains(type))
            {
                return(null);
            }
            _exludedTypes.Add(type);
            if (type.IsAbstract || type.IsInterface || type.IsPointer)
            {
                return(null);
            }
            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List <>))
            {
                var listGenerator = new ListGenerator();
                _exludedTypes.Remove(type);
                return((T)listGenerator.Generate(type.GetGenericArguments()[0]));
            }
            if (_generators.TryGetValue(type, out var generator))
            {
                _exludedTypes.Remove(type);
                return((T)generator.Generate(type));
            }
            if (type.IsClass && !type.IsGenericType)
            {
                var instance = InitializeWithConstructor(type);
                if (instance != null)
                {
                    FillObject(instance);
                }
                _exludedTypes.Remove(type);
                return(instance);
            }
            if (type.IsValueType && !type.IsGenericType)
            {
                var instance = default(T);
                if (instance != null)
                {
                    FillObject(instance);
                    _exludedTypes.Remove(type);
                    return(instance);
                }
            }
            _exludedTypes.Remove(type);
            return(default(T));
        }
Beispiel #3
0
        public object GenerateValue(Type type)
        {
            object result = null;
            Func <Random, object> genDelegate = null;

            if (type.IsGenericType && (type.GetInterface(nameof(IList)) != null))
            {
                result = new ListGenerator(type.GenericTypeArguments[0]).GenerateValue(FakerSingleton.random);
            }
            else if (generatorsDict.TryGetValue(type, out genDelegate))
            {
                result = genDelegate(FakerSingleton.random);
            }
            else
            {
                if (!FakerSingleton.getInstance().antiCycleList.Contains(type))
                {
                    result = FakerSingleton.getInstance().Create(type);
                }
            }

            return(result);
        }