public static OdcmServiceClass ServiceOdcmClass(OdcmNamespace odcmNamespace, Action <OdcmServiceClass> config = null) { var retVal = new OdcmServiceClass(Any.CSharpIdentifier(), odcmNamespace); var entities = odcmNamespace.Classes .Where(c => c.Kind == OdcmClassKind.Entity); foreach (var entity in entities) { retVal.Properties.Add(new OdcmProperty(entity.Name) { Class = retVal, Type = entity }); retVal.Properties.Add(new OdcmProperty(entity.Name + "s") { Class = retVal, Type = entity, IsCollection = true }); } retVal.Methods.AddRange(Any.Sequence(s => Any.OdcmMethod())); 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())); }