コード例 #1
0
        public static OdcmNamespace OdcmNamespace(Action <OdcmNamespace> config = null)
        {
            var retVal = new OdcmNamespace(Any.CSharpIdentifier());

            retVal.Types.AddRange(Any.Sequence(s => Any.OdcmEnum()));

            retVal.Types.AddRange(Any.Sequence(s => Any.ComplexOdcmType(retVal)));

            var classes = Any.Sequence(s => Any.EntityOdcmClass(retVal)).ToArray();

            foreach (var @class in classes)
            {
                @class.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p =>
                {
                    p.Class = @class;
                    p.Type  = classes.RandomElement();
                })));
            }

            classes[0].Base = classes[1];

            retVal.Types.AddRange(classes);

            if (config != null)
            {
                config(retVal);
            }

            return(retVal);
        }
コード例 #2
0
        public static OdcmClass EntityOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmClass> config = null)
        {
            var retVal = new OdcmClass(Any.CSharpIdentifier(), odcmNamespace.Name, OdcmClassKind.Entity);

            retVal.Properties.AddRange(Any.Sequence(i => Any.PrimitiveOdcmProperty(p => p.Class = retVal)));

            retVal.Key.AddRange(retVal.Properties.RandomSubset(2).Select(p => p.Field));

            if (odcmNamespace.Classes.Any(c => c.Kind == OdcmClassKind.Complex))
            {
                retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p =>
                {
                    p.Class = retVal;
                    p.Type  = odcmNamespace.Classes.Where(c => c.Kind == OdcmClassKind.Complex).RandomElement();
                })));
            }

            if (config != null)
            {
                config(retVal);
            }

            retVal.Methods.AddRange(Any.Sequence(s => Any.OdcmMethod()));

            return(retVal);
        }
コード例 #3
0
ファイル: Any.Odcm.cs プロジェクト: tonycrider/Vipr
        private static void EntityOrMediaOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmEntityClass> config, OdcmEntityClass retVal)
        {
            retVal.Properties.AddRange(Any.Sequence(i => Any.PrimitiveOdcmProperty(p => p.Class = retVal)));

            retVal.Key.AddRange(retVal.Properties.RandomSubset(2));

            if (odcmNamespace.Classes.Any(c => c.Kind == OdcmClassKind.Complex))
            {
                retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p =>
                {
                    p.Class = retVal;
                    p.Type  = odcmNamespace.Classes.Where(c => c.Kind == OdcmClassKind.Complex).RandomElement();
                })));
            }

            retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmEntityProperty(retVal, p => { p.Class = retVal; })));

            retVal.Properties.AddRange(Any.Sequence(i => Any.OdcmEntityProperty(retVal, p =>
            {
                p.Class        = retVal;
                p.IsCollection = true;
            })));

            if (config != null)
            {
                config(retVal);
            }

            retVal.Methods.AddRange(Any.Sequence(s => Any.OdcmMethod()));
        }
コード例 #4
0
ファイル: Any.Odcm.cs プロジェクト: tonycrider/Vipr
        public static OdcmNamespace OdcmNamespace(Action <OdcmNamespace> config = null)
        {
            var retVal = new OdcmNamespace(Any.CSharpIdentifier());

            retVal.Types.AddRange(Any.Sequence(s => Any.OdcmEnum()));

            retVal.Types.AddRange(Any.Sequence(s => Any.ComplexOdcmClass(retVal)));

            var classes = Any.Sequence(s => Any.OdcmEntityClass(retVal))
                          .Concat(Any.Sequence(s => Any.MediaOdcmClass(retVal), count: 2)).ToArray();

            foreach (var @class in (from @class in retVal.Types where @class is OdcmEntityClass select @class as OdcmEntityClass))
            {
                @class.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p =>
                {
                    p.Class = @class;
                    p.Type  = classes.RandomElement();
                })));
            }
            foreach (var @class in classes)
            {
                @class.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p =>
                {
                    p.Class = @class;
                    p.Type  = classes.RandomElement();
                })));
            }

            classes[0].Base = classes[1];

            if (!classes[1].Derived.Contains(classes[0]))
            {
                classes[1].Derived.Add(classes[0]);
            }

            retVal.Types.AddRange(classes);

            if (config != null)
            {
                config(retVal);
            }

            return(retVal);
        }