示例#1
0
        public void MultiplePrimaryKeyReferenceTest(TestItem data)
        {
            var     listener = new CreateTableStatementDetectListener();
            IParser parser   = new Parser();

            parser.Parse(data.Statement, listener);
            var definition = listener.TableDefinition;

            listener.IsTargetStatement.Should().BeTrue();
            listener.IsParseBegin.Should().BeTrue();
            listener.IsParseCompleted.Should().BeTrue();
            listener.TableDefinition.Should().NotBeNull();

            for (var i = 0; i < listener.TableDefinition.Columns.Length; i++)
            {
                if (data.Expected[i].PrimaryKeyReference != null)
                {
                    definition.Columns[i].PrimaryKeyReference.KeyName.Should().Be(data.Expected[i].PrimaryKeyReference.KeyName);
                    definition.Columns[i].PrimaryKeyReference.Should().NotBeNull();
                    definition.PrimaryKey.Should().NotBeNull();
                    definition.PrimaryKey.KeyName.Should().Be(definition.Columns[i].PrimaryKeyReference.KeyName);
                    definition.PrimaryKey.Indexes.Should().NotBeNull();
                    definition.PrimaryKey.Indexes.Length.Should().Be(definition.Columns[i].PrimaryKeyReference.Indexes.Length);

                    // index name must match to referenced column name
                    foreach (var index in definition.PrimaryKey.Indexes)
                    {
                        foreach (var reference in index.ColumnReference)
                        {
                            index.IndexKey.Should().Be(reference.Name);
                        }
                    }
                }
            }
        }
示例#2
0
        public void MultiplePrimaryKeyColumnTests(TestItem data)
        {
            var     listener = new CreateTableStatementDetectListener();
            IParser parser   = new Parser();

            parser.Parse(data.Statement, listener);
            var definition = listener.TableDefinition;

            listener.IsTargetStatement.Should().BeTrue();
            listener.IsParseBegin.Should().BeTrue();
            listener.IsParseCompleted.Should().BeTrue();
            listener.TableDefinition.Should().NotBeNull();

            for (var i = 0; i < listener.TableDefinition.Columns.Length; i++)
            {
                definition.Columns[i].Name.Should().Be(data.Expected[i].Name);
                definition.Columns[i].Order.Should().Be(data.Expected[i].Order);
                definition.Columns[i].AutoIncrement.Should().Be(data.Expected[i].AutoIncrement);
                definition.Columns[i].Data.IsNullable.Should().Be(data.Expected[i].Data.IsNullable);
                definition.Columns[i].Data.IsUnsigned.Should().Be(data.Expected[i].Data.IsUnsigned);
                definition.Columns[i].Data.Length.Should().Be(data.Expected[i].Data.Length);
                definition.Columns[i].Data.DataType.Should().Be(data.Expected[i].Data.DataType);
                definition.Columns[i].HasDefault.Should().Be(data.Expected[i].HasDefault);
                definition.Columns[i].DefaultValue.Should().Be(data.Expected[i].DefaultValue);
            }
        }
        public void ParsableTest(TestItem data)
        {
            var     listener = new CreateTableStatementDetectListener();
            IParser parser   = new Parser();

            parser.Parse(data.Statement, listener);
            listener.IsTargetStatement.Should().BeTrue();
            listener.IsParseBegin.Should().BeTrue();
            listener.IsParseCompleted.Should().BeTrue();
            listener.TableDefinition.Should().NotBeNull();
        }
        public void SqlTableCommentTest(TestItem data)
        {
            var     listener = new CreateTableStatementDetectListener();
            IParser parser   = new Parser();

            parser.Parse(data.Statement, listener);
            var definition = listener.TableDefinition;

            listener.IsTargetStatement.Should().BeTrue();
            listener.IsParseBegin.Should().BeTrue();
            listener.IsParseCompleted.Should().BeTrue();
            listener.TableDefinition.Should().NotBeNull();

            definition.Collation.Should().Be(data.Expected.Collation);
            definition.Engine.Should().Be(data.Expected.Engine);
            definition.Comment.Should().Be(data.Expected.Comment);
        }
示例#5
0
        public void ParseString(
            [Option("-i", "mysql query to parse")] string input,
            [Option("-o", "directory path to output C# class file")] string output,
            [Option("-n", "namespace to write")] string @namespace,
            [Option("-c", "add bom or not")] string converter  = defaultConverter,
            [Option("--addbom", "add bom or not")] bool addbom = false)
        {
            var     listener = new CreateTableStatementDetectListener();
            IParser parser   = new Parser();

            parser.Parse(input, listener);
            var definition        = listener.TableDefinition;
            var resolvedConverter = TypeConverterResolver.Resolve(converter);

            Context.Logger.LogInformation($"Output Directory: {output}");
            new Generator(addbom, resolvedConverter).Save(@namespace, definition, output);
        }
示例#6
0
        public void MultipleIndexKeyReferenceTest(TestItem data)
        {
            var     listener = new CreateTableStatementDetectListener();
            IParser parser   = new Parser();

            parser.Parse(data.Statement, listener);
            var definition = listener.TableDefinition;

            listener.IsTargetStatement.Should().BeTrue();
            listener.IsParseBegin.Should().BeTrue();
            listener.IsParseCompleted.Should().BeTrue();
            listener.TableDefinition.Should().NotBeNull();

            for (var i = 0; i < listener.TableDefinition.Columns.Length; i++)
            {
                if (data.Expected[i].IndexKeysReferences != null)
                {
                    var j = 0;
                    foreach (var key in definition.Columns[i].IndexKeysReferences)
                    {
                        key.KeyName.Should().Be(data.Expected[i].IndexKeysReferences.Skip(j).First().KeyName);
                        key.Indexes.Should().NotBeNull();
                        j++;
                    }
                    definition.IndexKeys.Should().NotBeNull();
                    foreach (var key in definition.IndexKeys)
                    {
                        key.Indexes.Should().NotBeNull();
                        key.Indexes.Where(x => x.IndexKey == definition.Columns[i].Name).Should().NotBeNull();

                        // index name must match to referenced column name
                        foreach (var index in key.Indexes)
                        {
                            foreach (var reference in index.ColumnReference)
                            {
                                index.IndexKey.Should().Be(reference.Name);
                            }
                        }
                    }
                }
            }
        }