using System.Security.Principal; using finskaya0304; namespace TestFinskaya0304; public class Tests { private account[] user; private StringReader _stringReader; private StringWriter _stringWriter; [SetUp] public void Setup() { user = new account[100]; _stringWriter = new StringWriter(); Console.SetOut(_stringWriter); } [TearDown] public void TearDown() { _stringWriter?.Dispose(); _stringReader?.Dispose(); } [Test] public void OpenNewAccount_ShouldReturnNewAccountWithNameSumAndNum_WhenFioStringAndSumMore1000() { _stringReader = new StringReader("fio\n1000\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); Assert.AreEqual(user[0].GetName(), "fio"); Assert.AreEqual(user[0].GetSum(), 1000.00); Assert.IsNotEmpty(user[0].GetNum()); } [Test] public void OpenNewAccount_ShouldReturnNewAccountWithNameSumAndNum_WhenFioStringAndSumLess1000() { _stringReader = new StringReader("fio\n100\nfio\n1000\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); string output = _stringWriter.ToString(); Assert.IsTrue(output.Contains("Сумма слишком мала, попробуйте ещё раз!")); } [Test] public void OpenNewAccount_ShouldReturnNewAccountWithNameSumAndNum_WhenFioIsNumberAndSumMore1000() { _stringReader = new StringReader("123\n1000\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); string output = _stringWriter.ToString(); Assert.AreEqual(user[0].GetName(), "123"); Assert.AreEqual(user[0].GetSum(), 1000.00); Assert.IsNotEmpty(user[0].GetNum()); } [Test] public void OpenNewAccount_ShouldThrowFormatException_WhenFioStringAndSumIsString() { _stringReader = new StringReader("123\nbuba\n"); Console.SetIn(_stringReader); user[0] = new account(); Assert.Throws(() => user[0].otk()); } [Test] public void CreateNewNum_ShouldReturnNewNumWithLen20_WhenCreatedNewAccount() { user[0] = new account(); user[0].num_gen(); Assert.AreEqual(user[0].GetNum().Length, 20); } [Test] public void CreateFileWIthAccountInfo_ShouldCreateFileWithCorrectContent_WhenFioStringAndSumMore1000() { _stringReader = new StringReader("fio\n1000\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); string filePath = Path.Combine(Directory.GetCurrentDirectory(), user[0].GetNum() + ".txt"); Assert.IsTrue(File.Exists(filePath)); string fileContent = File.ReadAllText(filePath); Assert.IsTrue(fileContent.Contains(user[0].GetNum())); Assert.IsTrue(fileContent.Contains(user[0].GetName())); Assert.IsTrue(fileContent.Contains(user[0].GetSum().ToString())); } [Test] public void ReplenishmentOfBalance_ShouldReturnNewBalance_WhenReplenishmentSumIsPositive() { _stringReader = new StringReader("fio\n1000\n500\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum()+500; user[0].top_up(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void ReplenishmentOfBalance_ShouldReturnNewBalance_WhenReplenishmentSumIsNegative() { _stringReader = new StringReader("fio\n1000\n-500\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum()+(-500); user[0].top_up(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void ReplenishmentOfBalance_ShouldReturnNewBalance_WhenReplenishmentSumIsZero() { _stringReader = new StringReader("fio\n1000\n0\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum()+0; user[0].top_up(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void ReplenishmentOfBalance_ShouldThrowFormatException_WhenReplenishmentSumIsString() { _stringReader = new StringReader("fio\n1000\naa\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); Assert.Throws(() => user[0].top_up()); } [Test] public void WithdrawalFromBalance_ShouldReturnNewBalance_WhenWithdrawalSumIsPositive() { _stringReader = new StringReader("fio\n1000\n500\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum()-500; user[0].umen(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void WithdrawalFromBalance_ShouldReturnNewBalance_WhenWithdrawalSumIsNegative() { _stringReader = new StringReader("fio\n1000\n-500\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum()-(-500); user[0].umen(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void WithdrawalFromBalance_ShouldReturnNewBalance_WhenWithdrawalSumIsZero() { _stringReader = new StringReader("fio\n1000\n0\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum()-0; user[0].umen(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void WithdrawalFromBalance_ShouldReturnNewBalance_WhenBalanceLesserThanZero() { _stringReader = new StringReader("fio\n1000\n2000\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum(); user[0].umen(); var ex = Assert.Throws(() => { Assert.AreEqual(balance, user[0].GetSum()); }); } [Test] public void WithdrawalFromBalance_ShouldThrowFormatException_WhenWithdrawalSumIsString() { _stringReader = new StringReader("fio\n1000\naa\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); Assert.Throws(() => user[0].umen()); } [Test] public void WithdrawalFromBalance_ShouldReturnNewBalance_WhenWithdrawalSumIsAllBalance() { _stringReader = new StringReader("fio\n1000\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); float balance = user[0].GetSum() - 1000; user[0].obnul(); Assert.AreEqual(balance, user[0].GetSum()); } [Test] public void TransferFromBalance_ShouldReturnNewBalances_WhenSumOfTransferLesserThanBalance() { _stringReader = new StringReader("fio\n3000\nfio2\n5000\n1000\n1\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); user[1] = new account(); user[1].otk(); float balance1 = user[0].GetSum()-1000; float balance2 = user[1].GetSum()+1000; user[0].perevod(); var ex = Assert.Throws(() => { Assert.AreEqual(balance1, user[0].GetSum(), 0.001f); Assert.AreEqual(balance2, user[1].GetSum(), 0.001f); }); } [Test] public void TransferFromBalance_ShouldReturnNewBalances_WhenSumOfTransferBiggerThanBalance() { _stringReader = new StringReader("fio\n3000\nfio2\n5000\n10000\n1\n0\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); user[1] = new account(); user[1].otk(); user[0].perevod(); string output = _stringWriter.ToString(); Assert.IsTrue(output.Contains("На счету недостаточно средств!")); } [Test] public void TransferFromBalance_ShouldThrowFormatException_WhenSumOfTransferIsString() { _stringReader = new StringReader("fio\n3000\nfio2\n5000\naa\n1\n"); Console.SetIn(_stringReader); user[0] = new account(); user[0].otk(); user[1] = new account(); user[1].otk(); Assert.Throws(() => user[0].perevod()); } }