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); }
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); }
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())); }
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); }