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

249 lines
7.4 KiB
C#

using System;
using System.Data.Common;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace System.Data.Jet.Test
{
[TestClass]
public class AdoxTest
{
[TestMethod]
public void CreateDatabase()
{
try
{
8 years ago
JetConnection.ClearAllPools();
File.Delete("AdoxTest.accdb");
}
catch (Exception e)
{
Console.WriteLine(e);
}
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString("AdoxTest.accdb"));
8 years ago
JetConnection.ClearAllPools();
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameTableAdox()
{
try
{
8 years ago
JetConnection.ClearAllPools();
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");
}
8 years ago
JetConnection.ClearAllPools();
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameColumnAdox()
{
try
{
8 years ago
JetConnection.ClearAllPools();
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();
8 years ago
JetConnection.ClearAllPools();
connection.Open();
CheckColumnExists(connection, "tableName", "newColumnName");
}
8 years ago
JetConnection.ClearAllPools();
File.Delete("AdoxTest.accdb");
}
//[TestMethod]
public void RenameIndexAdox()
{
try
{
8 years ago
JetConnection.ClearAllPools();
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);
CheckIndexExists(connection, "indexName");
AdoxWrapper.RenameIndex(JetConnection.GetConnectionString("AdoxTest.accdb"), "tableName", "indexName", "newIndexName");
connection.Close();
connection.Open();
CheckIndexExists(connection, "newIndexName");
}
8 years ago
JetConnection.ClearAllPools();
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameTableQuery()
{
try
{
8 years ago
JetConnection.ClearAllPools();
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");
}
8 years ago
JetConnection.ClearAllPools();
File.Delete("AdoxTest.accdb");
}
[TestMethod]
public void RenameColumnQuery()
{
try
{
8 years ago
JetConnection.ClearAllPools();
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();
8 years ago
JetConnection.ClearAllPools();
connection.Open();
CheckColumnExists(connection, "tableName", "newColumnName");
}
8 years ago
JetConnection.ClearAllPools();
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 void CheckIndexExists(JetConnection connection, string indexName)
{
var command = connection.CreateCommand($"SELECT COUNT(*) FROM (SHOW INDEXES) WHERE Name='{indexName}'");
int result = (int)command.ExecuteScalar();
command.Dispose();
if (result != 1)
throw new Exception($"Index {indexName} not found");
}
private static void CreateTable(JetConnection connection)
{
DbCommand command;
command = connection.CreateCommand(@"
CREATE TABLE tableName (columnName int);
CREATE INDEX indexName ON tableName (columnName);");
command.ExecuteNonQuery();
command.Dispose();
}
}
}