You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
EntityFrameworkCore.Jet/test/System.Data.Jet.Test/AdoxTest.cs

188 lines
5.3 KiB
C#

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace System.Data.Jet.Test
{
[TestClass]
public class AdoxTest
{
[TestMethod]
public void CreateDatabase()
{
try
{
File.Delete("AdoxTest.accdb");
}
catch (Exception e)
{
Console.WriteLine(e);
}
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString("AdoxTest.accdb"));
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameTableAdox()
{
try
{
File.Delete("AdoxTest.accdb");
}
catch (Exception e)
{
Console.WriteLine(e);
}
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString("AdoxTest.accdb"));
using (JetConnection connection = new JetConnection(JetConnection.GetConnectionString("AdoxTest.accdb")))
{
connection.Open();
CreateTable(connection);
CheckTableExists(connection, "tableName");
AdoxWrapper.RenameTable(JetConnection.GetConnectionString("AdoxTest.accdb"), "tableName", "newTableName");
CheckTableExists(connection, "newTableName");
}
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameColumnAdox()
{
try
{
File.Delete("AdoxTest.accdb");
}
catch (Exception e)
{
Console.WriteLine(e);
}
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString("AdoxTest.accdb"));
using (JetConnection connection = new JetConnection(JetConnection.GetConnectionString("AdoxTest.accdb")))
{
connection.Open();
CreateTable(connection);
CheckColumnExists(connection, "tableName", "columnName");
AdoxWrapper.RenameColumn(JetConnection.GetConnectionString("AdoxTest.accdb"), "tableName", "columnName", "newColumnName");
connection.Close();
connection.Open();
CheckColumnExists(connection, "tableName", "newColumnName");
}
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameTableQuery()
{
try
{
File.Delete("AdoxTest.accdb");
}
catch (Exception e)
{
Console.WriteLine(e);
}
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString("AdoxTest.accdb"));
using (JetConnection connection = new JetConnection(JetConnection.GetConnectionString("AdoxTest.accdb")))
{
connection.Open();
CreateTable(connection);
CheckTableExists(connection, "tableName");
connection.CreateCommand("rename table tableName to newTableName").ExecuteNonQuery();
CheckTableExists(connection, "newTableName");
}
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameColumnQuery()
{
try
{
File.Delete("AdoxTest.accdb");
}
catch (Exception e)
{
Console.WriteLine(e);
}
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString("AdoxTest.accdb"));
using (JetConnection connection = new JetConnection(JetConnection.GetConnectionString("AdoxTest.accdb")))
{
connection.Open();
CreateTable(connection);
CheckColumnExists(connection, "tableName", "columnName");
connection.CreateCommand("rename column tableName.columnName to newColumnName").ExecuteNonQuery();
connection.Close();
connection.Open();
CheckColumnExists(connection, "tableName", "newColumnName");
}
File.Delete("AdoxTest.accdb");
}
private void CheckTableExists(JetConnection connection, string tableName)
{
var command = connection.CreateCommand($"SELECT COUNT(*) FROM (SHOW TABLES) WHERE Name='{tableName}'");
int result = (int)command.ExecuteScalar();
command.Dispose();
if (result != 1)
throw new Exception($"Table {tableName} not found");
}
private void CheckColumnExists(JetConnection connection, string tableName, string columnName)
{
var command = connection.CreateCommand($"SELECT COUNT(*) FROM (SHOW TABLECOLUMNS) WHERE Table='{tableName}' AND Name='{columnName}'");
int result = (int)command.ExecuteScalar();
command.Dispose();
if (result != 1)
throw new Exception($"Column {tableName}.{columnName} not found");
}
private static void CreateTable(JetConnection connection)
{
var command = connection.CreateCommand("CREATE TABLE tableName (columnName int)");
command.ExecuteNonQuery();
command.Dispose();
}
}
}