Exemple #1
0
 public static void ModifyRandomRow(this CremaDataTable dataTable)
 {
     if (RandomUtility.Within(90) == true)
     {
         var dataRow    = dataTable.Rows.RandomOrDefault();
         var dataColumn = dataTable.Columns.RandomOrDefault();
         if (dataRow != null && dataColumn != null)
         {
             dataRow.SetRandomValue(dataColumn);
             if (RandomUtility.Within(5) == true)
             {
                 dataRow.IsEnabled = RandomUtility.NextBoolean();
             }
         }
     }
     else if (RandomUtility.Within(75) == true)
     {
         AddRandomRow(dataTable);
     }
     else
     {
         var dataRow = dataTable.Rows.RandomOrDefault();
         if (dataRow != null)
         {
             if (RandomUtility.Within(50) == true)
             {
                 dataRow.Delete();
             }
             else
             {
                 dataTable.Rows.Remove(dataRow);
             }
         }
     }
 }
Exemple #2
0
        public void SetIsUnique(ITableColumn column, TaskContext context)
        {
            column.Dispatcher.Invoke(() =>
            {
                var isUnique = RandomUtility.NextBoolean();
                if (Verify(isUnique) == false)
                {
                    return;
                }
                column.SetIsUnique(context.Authentication, isUnique);
            });

            bool Verify(bool isUnique)
            {
                if (context.AllowException == true)
                {
                    return(true);
                }
                if (isUnique == true && column.DataType == typeof(bool).GetTypeName())
                {
                    return(false);
                }
                var template = column.Template;

                if (isUnique == false && column.IsKey == true && template.Count(item => item.IsKey) == 1)
                {
                    return(false);
                }
                return(true);
            }
        }
Exemple #3
0
        public void SetAutoIncrement(ITableColumn column, TaskContext context)
        {
            column.Dispatcher.Invoke(() =>
            {
                var autoIncrement = RandomUtility.NextBoolean();
                if (Verify(autoIncrement) == false)
                {
                    return;
                }
                column.SetAutoIncrement(context.Authentication, autoIncrement);
            });

            bool Verify(bool autoIncrement)
            {
                if (context.AllowException == true)
                {
                    return(true);
                }
                if (autoIncrement == true && CremaDataTypeUtility.CanUseAutoIncrement(column.DataType) == false)
                {
                    return(false);
                }
                return(true);
            }
        }
Exemple #4
0
        public static void ChangeRow(this ITableContent content, Authentication authentication)
        {
            var table = content.Table;
            var row   = content.RandomOrDefault();

            if (row == null)
            {
                return;
            }

            var types = table.GetService(typeof(ITypeCollection)) as ITypeCollection;

            if (RandomUtility.Within(5) == true)
            {
                row.SetTags(authentication, tags.Random());
            }
            else if (RandomUtility.Within(5) == true)
            {
                row.SetIsEnabled(authentication, RandomUtility.NextBoolean());
            }
            else
            {
                var columnInfo = table.TableInfo.Columns.Random();
                //row.SetField(authentication, columnInfo.Name, TypeContextExtensions.GetRandomValue(types, columnInfo));
            }
        }
Exemple #5
0
        public static void CreateRow(this ITableContent content, Authentication authentication)
        {
            var    table      = content.Table;
            var    parent     = content.Parent;
            string relationID = null;

            if (parent != null && parent.Any() == true)
            {
                relationID = parent.Random().RelationID;
            }

            var row = content.AddNew(authentication, relationID);

            var types = table.GetService(typeof(ITypeCollection)) as ITypeCollection;

            foreach (var item in table.TableInfo.Columns)
            {
                if (item.AutoIncrement == false)
                {
                    //row.SetField(authentication, item.Name, TypeContextExtensions.GetRandomValue(types, item));
                }
            }

            if (RandomUtility.Within(25) == true)
            {
                row.SetTags(authentication, tags.Random());
            }

            if (RandomUtility.Within(25) == true)
            {
                row.SetIsEnabled(authentication, RandomUtility.NextBoolean());
            }

            content.EndNew(authentication, row);
        }
Exemple #6
0
        public static bool GenerateRow(this ITableContent content, Authentication authentication)
        {
            var row = NewRandomRow(content, authentication);

            if (FillFields(row, authentication) == true)
            {
                if (RandomUtility.Within(25) == true)
                {
                    row.SetTags(authentication, tags.Random());
                }

                if (RandomUtility.Within(25) == true)
                {
                    row.SetIsEnabled(authentication, RandomUtility.NextBoolean());
                }

                try
                {
                    content.EndNew(authentication, row);
                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
            return(false);
        }
Exemple #7
0
        public async Task <IType> GetTypeAsync(IDataBase dataBase)
        {
            var typeFlags              = this.TypeFlags;
            var typeCollection         = dataBase.GetService(typeof(ITypeCollection)) as ITypeCollection;
            var typeCategoryCollection = dataBase.GetService(typeof(ITypeCategoryCollection)) as ITypeCategoryCollection;
            var typeContext            = dataBase.GetService(typeof(ITypeContext)) as ITypeContext;
            var type = await typeCollection.GetRandomTypeAsync(typeFlags, this);

            if (type is null)
            {
                var category = await typeCategoryCollection.GetRandomTypeCategoryAsync();

                var isFlag  = typeFlags.HasFlag(TypeFlags.IsFlag) || RandomUtility.NextBoolean() == true;
                var newType = await category.GenerateTypeAsync(Authentication.System, isFlag);

                if (newType is null)
                {
                    throw new InvalidOperationException();
                }
                if (typeFlags.HasFlag(TypeFlags.IsReferenced) == true)
                {
                    var tableFilter = new TableFilter(TableFlags.Public | TableFlags.NotBeingEdited | TableFlags.NotBeingSetup | TableFlags.NotLocked)
                    {
                        TypeNames = new string[] { type.Path }
                    };
                    var table = tableFilter.GetTableAsync(dataBase);
                }
                if (typeFlags.HasFlag(TypeFlags.IsBeingEdited) == true)
                {
                    await type.Template.BeginEditAsync(Authentication.System);
                }
                return(newType);
            }
            return(type);
        }
Exemple #8
0
        public static async Task <bool> GenerateRowAsync(this ITableContent content, Authentication authentication)
        {
            var row = await NewRandomRowAsync(content, authentication);

            if (FillFields(row, authentication) == true)
            {
                if (RandomUtility.Within(25) == true)
                {
                    await row.SetTagsAsync(authentication, tags.Random());
                }

                if (RandomUtility.Within(25) == true)
                {
                    await row.SetIsEnabledAsync(authentication, RandomUtility.NextBoolean());
                }

                try
                {
                    await content.EndNewAsync(authentication, row);

                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
            return(false);
        }
Exemple #9
0
        public static async Task <ITable> AddRandomChildTableAsync(this ITable table, Authentication authentication, DataBaseSettings settings)
        {
            var copyData = RandomUtility.NextBoolean();
            var template = await table.NewTableAsync(authentication);

            await template.InitializeRandomAsync(authentication);

            await template.EndEditAsync(authentication);

            if (template.Target is ITable[] tables)
            {
                foreach (var item in tables)
                {
                    var minCount = settings.TableContext.MinRowCount;
                    var maxCount = settings.TableContext.MaxRowCount;
                    var count    = RandomUtility.Next(minCount, maxCount);
                    await AddRandomRowsAsync(item, authentication, count);
                }
                return(tables.First());
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Exemple #10
0
        public static bool FillFields(this CremaDataRow dataRow)
        {
            var changed = 0;

            foreach (var item in dataRow.Table.Columns)
            {
                if (item.AutoIncrement == true)
                {
                    continue;
                }
                if (dataRow[item.ColumnName] != DBNull.Value)
                {
                    continue;
                }
                if (FillField(dataRow, item) == false)
                {
                    return(false);
                }
                changed++;
            }
            if (RandomUtility.Within(5) == true)
            {
                dataRow.IsEnabled = RandomUtility.NextBoolean();
            }

            return(changed > 0);
        }
Exemple #11
0
        public async Task InheritAaync(ITable table, TaskContext context)
        {
            var authentication = context.Authentication;
            var categories     = table.GetService(typeof(ITableCategoryCollection)) as ITableCategoryCollection;
            var categoryPath   = await categories.Dispatcher.InvokeAsync(() => categories.Random().Path);

            var tableName = RandomUtility.NextIdentifier();
            var copyData  = RandomUtility.NextBoolean();

            if (context.AllowException == false)
            {
                if (await VerifyAsync() == false)
                {
                    return;
                }
            }
            await table.InheritAsync(authentication, tableName, categoryPath, copyData);

            Task <bool> VerifyAsync()
            {
                return(table.Dispatcher.InvokeAsync(() =>
                {
                    if (table.Parent != null)
                    {
                        return false;
                    }
                    if (table.TemplatedParent != null)
                    {
                        return false;
                    }
                    return true;
                }));
            }
        }
        public static void TableInheritTest(this IDataBase dataBase, Authentication authentication)
        {
            dataBase.Dispatcher.Invoke(() =>
            {
                var tableContext = dataBase.TableContext;
                var table        = tableContext.Tables.RandomOrDefault(item => item.TemplatedParent == null && item.VerifyAccessType(authentication, AccessType.Master) && item.Parent == null);

                if (table == null)
                {
                    return;
                }

                var newName = string.Join("_", "Table", RandomUtility.NextIdentifier());

                if (tableContext.Tables.Contains(newName) == true)
                {
                    return;
                }

                var category = tableContext.Categories.RandomOrDefault(item => item.VerifyAccessType(authentication, AccessType.Master));
                if (category == null)
                {
                    return;
                }

                table.Inherit(authentication, newName, category.Path, RandomUtility.NextBoolean());
            });
        }
Exemple #13
0
 public static void ModifyRandomMember(this CremaDataType dataType)
 {
     if (RandomUtility.Within(90) == true)
     {
         var typeMember = dataType.Members.RandomOrDefault();
         if (typeMember != null)
         {
             typeMember.SetRandomValue();
             if (RandomUtility.Within(5) == true)
             {
                 typeMember.IsEnabled = RandomUtility.NextBoolean();
             }
         }
     }
     else if (RandomUtility.Within(75) == true)
     {
         AddRandomMember(dataType);
     }
     else
     {
         var dataMember = dataType.Members.RandomOrDefault();
         if (dataMember != null)
         {
             if (RandomUtility.Within(50) == true)
             {
                 dataMember.Delete();
             }
             else
             {
                 dataType.Members.Remove(dataMember);
             }
         }
     }
 }
Exemple #14
0
 public void SetAllowNull(ITableColumn column, TaskContext context)
 {
     column.Dispatcher.Invoke(() =>
     {
         var allowNull = RandomUtility.NextBoolean();
         column.SetAllowNull(context.Authentication, allowNull);
     });
 }
Exemple #15
0
 public void SetIsKey(ITableColumn column, TaskContext context)
 {
     column.Dispatcher.Invoke(() =>
     {
         var isKey = RandomUtility.NextBoolean();
         column.SetIsKey(context.Authentication, isKey);
     });
 }
Exemple #16
0
 public void SetIsFlag(ITypeTemplate template, TaskContext context)
 {
     template.Dispatcher.Invoke(() =>
     {
         var isFlag = RandomUtility.NextBoolean();
         template.SetIsFlag(context.Authentication, isFlag);
     });
 }
        public static ITable AddRandomDerivedTable(this ITableCategory category, Authentication authentication)
        {
            var tableName    = RandomUtility.NextIdentifier();
            var copyData     = RandomUtility.NextBoolean();
            var tableContext = category.GetService(typeof(ITableContext)) as ITableContext;
            var table        = tableContext.Tables.Random(item => item.TemplatedParent == null && item.Parent == null);

            return(table.Inherit(authentication, tableName, category.Path, copyData));
        }
Exemple #18
0
        public static void InitializeRandom(this CremaDataColumn dataColumn)
        {
            var dataTable = dataColumn.Table;

            if (RandomUtility.Within(75) == true)
            {
                dataColumn.DataType = CremaDataTypeUtility.GetBaseTypes().Random();
            }
            else if (dataTable != null && dataTable.DataSet != null && dataTable.DataSet.Types.Any())
            {
                dataColumn.CremaType = dataTable.DataSet.Types.Random();
            }

            if (RandomUtility.Within(25) == true)
            {
                SetHopeType(dataColumn);
            }

            if (dataTable != null && dataTable.PrimaryKey.Any() == false)
            {
                dataColumn.IsKey = true;
            }
            else if (RandomUtility.Within(10) && dataColumn.DataType != typeof(bool))
            {
                dataColumn.IsKey  = true;
                dataColumn.Unique = RandomUtility.Within(75);
            }

            if (RandomUtility.Within(25) && dataColumn.DataType != typeof(bool))
            {
                var unique = RandomUtility.Within(75);
                if (unique != false || dataTable == null || dataTable.PrimaryKey.Count() != 1)
                {
                    dataColumn.Unique = unique;
                }
            }

            if (RandomUtility.Within(25) == true)
            {
                dataColumn.Comment = RandomUtility.NextString();
            }

            if (RandomUtility.Within(25) == true)
            {
                dataColumn.DefaultValue = dataColumn.GetRandomValue();
            }

            if (CremaDataTypeUtility.CanUseAutoIncrement(dataColumn.DataType) == true && dataColumn.DefaultValue == DBNull.Value)
            {
                dataColumn.AutoIncrement = RandomUtility.NextBoolean();
            }

            if (RandomUtility.Within(5) == true)
            {
                dataColumn.ReadOnly = true;
            }
        }
Exemple #19
0
 public void Copy(IDataBase dataBase, Authentication authentication)
 {
     dataBase.Dispatcher.Invoke(() =>
     {
         var dataBaseName = RandomUtility.NextIdentifier();
         var comment      = RandomUtility.NextString();
         var force        = RandomUtility.NextBoolean();
         dataBase.Copy(authentication, dataBaseName, comment, force);
     });
 }
Exemple #20
0
        public static async Task <ITable[]> AddRandomDerivedTableAsync(this ITableCategory category, Authentication authentication)
        {
            var tableCollection = category.GetService(typeof(ITableCollection)) as ITableCollection;
            var tableName       = RandomUtility.NextIdentifier();
            var copyData        = RandomUtility.NextBoolean();
            var tableContext    = category.GetService(typeof(ITableContext)) as ITableContext;
            var table           = await tableCollection.GetRandomTableAsync(item => item.TemplatedParent == null && item.Parent == null);

            return(await table.InheritAsync(authentication, tableName, category.Path, copyData));
        }
Exemple #21
0
        public async Task SetIsReadOnlyAsync(ITableColumn column, TaskContext context)
        {
            var authentication = context.Authentication;

            if (column.IsKey == false || RandomUtility.Within(55) == true)
            {
                var isReadOnly = RandomUtility.NextBoolean();
                await column.SetIsReadOnlyAsync(authentication, isReadOnly);
            }
        }
Exemple #22
0
        public static void CopyTable(this CremaDataSet dataSet)
        {
            var table = dataSet.Tables.RandomOrDefault();

            if (table == null)
            {
                return;
            }

            table.Copy("Table_" + RandomUtility.NextIdentifier(), RandomUtility.NextBoolean());
        }
Exemple #23
0
 public void Inherit(ITable table, TaskContext context)
 {
     table.Dispatcher.Invoke(() =>
     {
         var categories   = table.GetService(typeof(ITableCategoryCollection)) as ITableCategoryCollection;
         var categoryPath = categories.Random().Path;
         var tableName    = RandomUtility.NextIdentifier();
         var copyData     = RandomUtility.NextBoolean();
         table.Inherit(context.Authentication, tableName, categoryPath, copyData);
     });
 }
        public static async Task InitializeRandomAsync(this ITableColumn tableColumn, Authentication authentication)
        {
            var template = tableColumn.Template;
            var table    = tableColumn.Template.Target;

            if (RandomUtility.Within(75) == true)
            {
                await tableColumn.SetDataTypeAsync(authentication, CremaDataTypeUtility.GetBaseTypeNames().Random(item => item != typeof(bool).GetTypeName()));
            }
            else
            {
                await tableColumn.SetDataTypeAsync(authentication, template.SelectableTypes.Random());
            }

            if (template.Count == 0)
            {
                await tableColumn.SetIsKeyAsync(authentication, true);
            }
            else if (RandomUtility.Within(10) && tableColumn.DataType != typeof(bool).GetTypeName())
            {
                await tableColumn.SetIsKeyAsync(authentication, true);

                await tableColumn.SetIsUniqueAsync(authentication, RandomUtility.Within(75));
            }

            if (RandomUtility.Within(25) && tableColumn.DataType != typeof(bool).GetTypeName())
            {
                var unique = RandomUtility.Within(75);
                if (unique != false || template.PrimaryKey.Count() != 1)
                {
                    await tableColumn.SetIsUniqueAsync(authentication, unique);
                }
            }

            if (RandomUtility.Within(25) == true)
            {
                await tableColumn.SetCommentAsync(authentication, RandomUtility.NextString());
            }

            if (RandomUtility.Within(25) == true)
            {
                await tableColumn.SetDefaultValueAsync(authentication, await tableColumn.GetRandomStringAsync());
            }

            if (CremaDataTypeUtility.CanUseAutoIncrement(tableColumn.DataType) == true && tableColumn.DefaultValue == null)
            {
                await tableColumn.SetAutoIncrementAsync(authentication, RandomUtility.NextBoolean());
            }

            if (RandomUtility.Within(5) == true)
            {
                await tableColumn.SetIsReadOnlyAsync(authentication, true);
            }
        }
Exemple #25
0
        public async Task SetIsEnabledAsync(ITableRow row, TaskContext context)
        {
            var authentication = context.Authentication;

            if (object.Equals(context.State, System.Data.DataRowState.Detached) == true)
            {
                return;
            }
            var isEnabled = RandomUtility.NextBoolean();
            await row.SetIsEnabledAsync(authentication, isEnabled);
        }
Exemple #26
0
 public void SetIsReadOnly(ITableColumn column, TaskContext context)
 {
     column.Dispatcher.Invoke(() =>
     {
         if (column.IsKey == false || RandomUtility.Within(55) == true)
         {
             var isReadOnly = RandomUtility.NextBoolean();
             column.SetIsReadOnly(context.Authentication, isReadOnly);
         }
     });
 }
        public static ITable AddRandomChildTable(this ITable table, Authentication authentication)
        {
            var copyData = RandomUtility.NextBoolean();
            var template = table.NewTable(authentication);

            template.InitializeRandom(authentication);
            template.EndEdit(authentication);
            var child = template.Table;

            AddRandomRows(child, authentication, RandomUtility.Next(MinRowCount, MaxRowCount));
            return(child);
        }
Exemple #28
0
 public void SetIsEnabled(ITableRow row, TaskContext context)
 {
     if (object.Equals(context.State, System.Data.DataRowState.Detached) == true)
     {
         return;
     }
     row.Dispatcher.Invoke(() =>
     {
         var isEnabled = RandomUtility.NextBoolean();
         row.SetIsEnabled(context.Authentication, isEnabled);
     });
 }
Exemple #29
0
        public async Task SetAllowNullAsync(ITableColumn column, TaskContext context)
        {
            var authentication = context.Authentication;
            var allowNull      = RandomUtility.NextBoolean();

            if (context.AllowException == false)
            {
                if (await column.Dispatcher.InvokeAsync(() => column.IsKey == true && allowNull == true) == true)
                {
                    return;
                }
            }
            await column.SetAllowNullAsync(authentication, allowNull);
        }
Exemple #30
0
        public async Task SetAutoIncrementAsync(ITableColumn column, TaskContext context)
        {
            var authentication = context.Authentication;
            var autoIncrement  = RandomUtility.NextBoolean();

            if (context.AllowException == false)
            {
                if (autoIncrement == true && CremaDataTypeUtility.CanUseAutoIncrement(column.DataType) == false)
                {
                    return;
                }
            }
            await column.SetAutoIncrementAsync(authentication, autoIncrement);
        }