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