public void GetPositionsTest() { SQLiteDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Position position1 = new Position() { Symbol = "ONE", Quantity = 100, Class = TransactionClass.stock, }; Position position2 = new Position() { Symbol = "TWO", Quantity = 150, Class = TransactionClass.bond, }; database.SetPosition(position1); database.SetPosition(position2); List <Position> expectedPositions = new List <Position>() { position1, position2 }; List <Position> actualPositions = database.GetPositions(); CollectionAssert.AreEqual(expectedPositions, actualPositions); }
public void NewTransactionTest() { SQLiteDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Transaction transaction = new Transaction() { TransactionID = 1, Date = new DateTime(2000, 1, 1), Action = TransactionAction.buy, Class = TransactionClass.stock, Symbol = "AMZN", Amount = 1.00M, Quantity = 100, }; database.NewTransaction(transaction); using SQLiteConnection connection = new SQLiteConnection("Data Source=database.sqlite"); connection.Open(); using SQLiteCommand command = new SQLiteCommand("select * from Transactions where TransactionID = 1;", connection); using SQLiteDataReader reader = command.ExecuteReader(); reader.Read(); Assert.AreEqual(1L, reader["TransactionID"]); Assert.AreEqual(new DateTime(2000, 1, 1).ToString(CultureInfo.InvariantCulture), reader["Date"]); Assert.AreEqual((long)TransactionAction.buy, reader["ActionID"]); Assert.AreEqual((long)TransactionClass.stock, reader["ClassID"]); Assert.AreEqual("AMZN", reader["Symbol"]); Assert.AreEqual(1.00M, reader["Amount"]); }
public void CommitTransactionBuyChangeClassException() { IDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Transaction firstPurchase = new Transaction() { TransactionID = 1, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.buy, Quantity = 100, Amount = 100, }; Transaction secondPurchase = new Transaction() { TransactionID = 2, Symbol = "TEST", Class = TransactionClass.bond, Action = TransactionAction.buy, Quantity = 150, Amount = 200, }; CommitTransaction(database, firstPurchase); CommitTransaction(database, secondPurchase); }
public void CommitTransactionSellNotEnoughQuantity() { IDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Transaction purchase = new Transaction() { TransactionID = 1, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.buy, Quantity = 100, Amount = 100, }; Transaction sale = new Transaction() { TransactionID = 2, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.sell, Quantity = 125, Amount = 100, }; CommitTransaction(database, purchase); CommitTransaction(database, sale); }
public void CreateDatabaseTest() { SQLiteDatabase database = new SQLiteDatabase(); database.CreateDatabase(); using SQLiteConnection connection = new SQLiteConnection("Data Source=database.sqlite"); connection.Open(); CheckTableNames(connection); CheckActionsTable(connection); CheckClassesTable(connection); CheckLastPriceTable(connection); CheckPositionsTable(connection); CheckTransactionsTable(connection); }
public void GetPriceTest() { SQLiteDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Quote expectedQuote = new Quote() { Symbol = "TEST", Date = new DateTime(2000, 1, 1), Price = 100.00m, }; database.SaveQuote(expectedQuote); Quote actualQuote = database.GetLastQuote(expectedQuote.Symbol); Assert.AreEqual(expectedQuote.Price, actualQuote.Price); }
public void GetPositionTest() { SQLiteDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Position expectedPosition = new Position() { Symbol = "TEST", Class = TransactionClass.stock, Quantity = 100.55m, }; database.SetPosition(expectedPosition); Position actualPosition = database.GetPosition(expectedPosition.Symbol); Assert.AreEqual(expectedPosition.Symbol, actualPosition.Symbol); Assert.AreEqual(expectedPosition.Class, actualPosition.Class); Assert.AreEqual(expectedPosition.Quantity, actualPosition.Quantity); }
public void CommitTransactionSellHasEnoughQuantity() { IDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Transaction purchase = new Transaction() { TransactionID = 1, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.buy, Quantity = 100, Amount = 100, }; Transaction sale = new Transaction() { TransactionID = 2, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.sell, Quantity = 25, Amount = 100, }; Position expectedPosition = new Position() { Symbol = "TEST", Class = TransactionClass.stock, Quantity = 75, }; CommitTransaction(database, purchase); CommitTransaction(database, sale); VerifyPosition(database, expectedPosition); }
public void CommitTransactionBuy() { IDatabase database = new SQLiteDatabase(); database.CreateDatabase(); Transaction firstPurchase = new Transaction() { TransactionID = 1, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.buy, Quantity = 100, }; Transaction secondPurchase = new Transaction() { TransactionID = 2, Symbol = "TEST", Class = TransactionClass.stock, Action = TransactionAction.buy, Quantity = 150, }; Position expectedPosition = new Position() { Symbol = "TEST", Class = TransactionClass.stock, Quantity = 250, }; CommitTransaction(database, firstPurchase); CommitTransaction(database, secondPurchase); VerifyPosition(database, expectedPosition); }
private void _buttonNewDatabase_Click(object sender, RoutedEventArgs e) { OpenControls.Wpf.Serialisation.RegistryItemSerialiser registryItemSerialiser = new OpenControls.Wpf.Serialisation.RegistryItemSerialiser(_keyPath); OpenControls.Wpf.DatabaseDialogs.Model.DatabaseConfiguration databaseConfiguration = new OpenControls.Wpf.DatabaseDialogs.Model.DatabaseConfiguration(registryItemSerialiser); if (registryItemSerialiser.OpenKey()) { databaseConfiguration.Load(); } OpenControls.Wpf.DatabaseDialogs.ViewModel.NewDatabaseViewModel newDatabaseViewModel = new OpenControls.Wpf.DatabaseDialogs.ViewModel.NewDatabaseViewModel(databaseConfiguration); OpenControls.Wpf.DatabaseDialogs.View.NewDatabaseView newDatabaseView = new OpenControls.Wpf.DatabaseDialogs.View.NewDatabaseView(new OpenControls.Wpf.DatabaseDialogs.Model.Encryption()); newDatabaseView.DataContext = newDatabaseViewModel; if (newDatabaseView.ShowDialog() != true) { return; } if (!registryItemSerialiser.IsOpen) { registryItemSerialiser.CreateKey(); } databaseConfiguration.Save(); registryItemSerialiser.Close(); try { OpenControls.Wpf.DatabaseDialogs.Model.DatabaseProvider databaseProvider = (OpenControls.Wpf.DatabaseDialogs.Model.DatabaseProvider)newDatabaseViewModel.SelectedDatabaseProvider; if (databaseProvider == OpenControls.Wpf.DatabaseDialogs.Model.DatabaseProvider.SQLite) { SQLiteDatabase.CreateDatabase(this, newDatabaseViewModel.SQLite_Folder, newDatabaseViewModel.SQLite_DatabaseName); IDatabaseHost.IConfigurationStore = new DBStore.SQLiteConfigurationStore(IDatabaseHost.Database); IDatabaseHost.ISpeciesStore = new DBStore.SQLiteSpeciesStore(IDatabaseHost.Database); IDatabaseHost.IImagePathsStore = new DBStore.SQLiteImagePathsStore(IDatabaseHost.Database); IDatabaseHost.IImageStore = new DBStore.SQLiteImageStore(IDatabaseHost.Database); } else if (databaseProvider == OpenControls.Wpf.DatabaseDialogs.Model.DatabaseProvider.MicrosoftSQLServer) { string server = (newDatabaseViewModel.SqlServerInstances.Count > 0) ? newDatabaseViewModel.SqlServerInstances[newDatabaseViewModel.SelectedSqlServerInstance] : null; SQLServerDatabase.CreateDatabase( this, server, newDatabaseViewModel.SQLServer_UseWindowsAuthentication, newDatabaseViewModel.SQLServer_UserName, newDatabaseViewModel.SQLServer_Password, newDatabaseViewModel.SQLServer_Folder, newDatabaseViewModel.SQLServer_Filename); IDatabaseHost.IConfigurationStore = new DBStore.SQLServerConfigurationStore(IDatabaseHost.Database); IDatabaseHost.ISpeciesStore = new DBStore.SQLServerSpeciesStore(IDatabaseHost.Database); IDatabaseHost.IImagePathsStore = new DBStore.SQLServerImagePathsStore(IDatabaseHost.Database); IDatabaseHost.IImageStore = new DBStore.SQLServerImageStore(IDatabaseHost.Database); } else if (databaseProvider == OpenControls.Wpf.DatabaseDialogs.Model.DatabaseProvider.PostGreSQL) { PostgreSQLDatabase.CreateDatabase(this, newDatabaseViewModel.PostgreSQL_IPAddress, newDatabaseViewModel.PostgreSQL_Port, newDatabaseViewModel.PostgreSQL_UseWindowsAuthentication, newDatabaseViewModel.PostgreSQL_UserName, newDatabaseViewModel.PostgreSQL_Password, newDatabaseViewModel.PostgreSQL_DatabaseName); IDatabaseHost.IConfigurationStore = new DBStore.PostgreSQLConfigurationStore(IDatabaseHost.Database); IDatabaseHost.ISpeciesStore = new DBStore.PostgreSQLSpeciesStore(IDatabaseHost.Database); IDatabaseHost.IImagePathsStore = new DBStore.PostgreSQLImagePathsStore(IDatabaseHost.Database); IDatabaseHost.IImageStore = new DBStore.PostgreSQLImageStore(IDatabaseHost.Database); } else if (databaseProvider == OpenControls.Wpf.DatabaseDialogs.Model.DatabaseProvider.MySQL) { MySQLDatabase.CreateDatabase(this, newDatabaseViewModel.MySQL_IPAddress, newDatabaseViewModel.MySQL_Port, newDatabaseViewModel.MySQL_UseWindowsAuthentication, newDatabaseViewModel.MySQL_UserName, newDatabaseViewModel.MySQL_Password, newDatabaseViewModel.MySQL_DatabaseName); IDatabaseHost.IConfigurationStore = new DBStore.MySQLConfigurationStore(IDatabaseHost.Database); IDatabaseHost.ISpeciesStore = new DBStore.MySQLSpeciesStore(IDatabaseHost.Database); IDatabaseHost.IImagePathsStore = new DBStore.MySQLImagePathsStore(IDatabaseHost.Database); IDatabaseHost.IImageStore = new DBStore.MySQLImageStore(IDatabaseHost.Database); } else { throw new Exception("Unsupported database type"); } IDatabaseHost.IConfigurationStore.CreateTable(); IDatabaseHost.IConfigurationStore.Initialise(); IDatabaseHost.ISpeciesStore.CreateTable(); IDatabaseHost.IImagePathsStore.CreateTable(); IDatabaseHost.IImageStore.CreateTable(); } catch (Exception exception) { System.Windows.Forms.MessageBox.Show(exception.Message); return; } ShowSpeciesListView(IDatabaseHost.Database); }