Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions CourseApp.Tests/DemoTest.cs

This file was deleted.

117 changes: 117 additions & 0 deletions CourseApp.Tests/FightTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
namespace CourseApp.Tests;

using CourseApp.Effects;
using CourseApp.Players;
using Xunit;

[Collection("Sequential")]
public class FightTest
{
[Theory]
[InlineData(30, 40)]
[InlineData(20, 50)]
[InlineData(10, 5)]
public void AttackTest(int strength, int health)
{
// Arrange
IPlayer firstPlayer = new Archer("Мax", strength, 40, "Лучник");
IPlayer secondPlayer = new Mage("Nikita", 20, health, "Маг");
var healthUnderAttack = secondPlayer.Health;
var result = false;

// Act
firstPlayer.AttackEnemy(secondPlayer);

if (secondPlayer.Health < healthUnderAttack)
{
result = true;
}

// Assert
Assert.True(result);
}

[Fact]
public void UltimateTest()
{
// Arrange
IPlayer firstPlayer = new Archer("Мax", 30, 40, "Лучник");
IPlayer secondPlayer = new Mage("Nikita", 20, 40, "Маг");
IPlayer thirdPlayer = new Knight("Kevin", 20, 40, "Рыцарь");

// Act
firstPlayer.Ultimate(firstPlayer, secondPlayer, 1);
secondPlayer.Ultimate(secondPlayer, firstPlayer, 1);
secondPlayer.Ultimate(secondPlayer, thirdPlayer, 1);

// Assert
Assert.NotEmpty(firstPlayer.MyEffects);
Assert.NotEmpty(secondPlayer.MyEffects);
Assert.NotEmpty(thirdPlayer.MyEffects);
}

[Fact]
public void StunTest()
{
// Arrange
IPlayer firstPlayer = new Archer("Мax", 30, 40, "Лучник");
IPlayer secondPlayer = new Mage("Nikita", 20, 40, "Маг");
var result = false;

// Act
secondPlayer.Ultimate(secondPlayer, firstPlayer, 1);
if (firstPlayer.MyEffects[0] is Stun)
{
result = true;
}

// Assert
Assert.True(result);
}

[Fact]
public void EffectTest()
{
// Arrange
IPlayer firstPlayer = new Archer("Мax", 30, 40, "Лучник");
IPlayer secondPlayer = new Mage("Nikita", 20, 40, "Маг");
IPlayer thirdPlayer = new Knight("Kevin", 20, 40, "Рыцарь");

int[] firstPlayerUnderUltimate = { firstPlayer.Health, firstPlayer.Strength };
int[] secondPlayerUnderUltimate = { secondPlayer.Health, secondPlayer.Strength };
int[] thirdPlayerUnderUltimate = { thirdPlayer.Health, thirdPlayer.Strength };

firstPlayer.Ultimate(firstPlayer, secondPlayer, 1);
secondPlayer.Ultimate(secondPlayer, thirdPlayer, 1);
thirdPlayer.Ultimate(thirdPlayer, firstPlayer, 1);

var firstResult = false;
var secondResult = false;
var thirdResult = false;

// Act
firstPlayer.Effect(firstPlayer);
secondPlayer.Effect(secondPlayer);
thirdPlayer.Effect(thirdPlayer);

if (firstPlayer.Strength < firstPlayerUnderUltimate[0] || firstPlayer.Health > firstPlayerUnderUltimate[1])
{
firstResult = true;
}

if (secondPlayer.Strength < secondPlayerUnderUltimate[0] || secondPlayer.Health > secondPlayerUnderUltimate[1])
{
secondResult = true;
}

if (thirdPlayer.Strength < thirdPlayerUnderUltimate[0] || thirdPlayer.Health > thirdPlayerUnderUltimate[1])
{
thirdResult = true;
}

// Assert
Assert.True(firstResult);
Assert.True(secondResult);
Assert.True(thirdResult);
}
}
83 changes: 83 additions & 0 deletions CourseApp.Tests/GameTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
namespace CourseApp.Tests;

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.Json;
using CourseApp.Base;
using CourseApp.GeneratePlayers;
using CourseApp.Logger;
using CourseApp.Players;
using CourseApp.SelectorGame;
using PlayerNames;
using Xunit;

[Collection("Sequential")]
public class GameTest
{
[Fact]
public void DraftTest()
{
// Arrange
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine("1");
stringBuilder.AppendLine("Да");
stringBuilder.AppendLine("Да");
stringBuilder.AppendLine("10");
var stringReader = new StringReader(stringBuilder.ToString());
Console.SetIn(stringReader);

Game game = new Game(new GameLogger());
Selector selector = new Selector(new GameLogger());
List<bool> newClasses = selector.SelectCustomClass();
int playerNumbers = selector.SelectNumbPlayers();

const string filepath = @"/home/kiosk/Develop/Tprogramming_2022/CourseApp/Main/Names.json";
var json = File.ReadAllText(filepath);
var playerNames = JsonSerializer.Deserialize<List<Names>>(json);

PlayersGenerator playersGenerator = new PlayersGenerator(playerNumbers, playerNames, newClasses);

List<IPlayer> players = new List<IPlayer>(playersGenerator.GeneratePlayersArray());

// Act
var playersCopy = new List<IPlayer>(players);
game.Draft(players);

// Assert
Assert.NotSame(players, playersCopy);
}

[Fact]
public void TourTest()
{
// Arrange
Game game = new Game(new GameLogger());
List<IPlayer> players = new List<IPlayer>();
players.Add(new Archer("Max", 10, 30, "Рыцарь"));
players.Add(new Archer("Max", 10, 30, "Рыцарь"));
players.Add(new Archer("Max", 10, 30, "Рыцарь"));

// Act
game.Tour(players);

// Assert
Assert.NotEmpty(players);
}

[Fact]
public void EndGameTest()
{
// Arrange
Game game = new Game(new GameLogger());
List<IPlayer> players = new List<IPlayer>();
players.Add(new Archer("Max", 40, 30, "Рыцарь"));

// Act
var result = game.EndGame(players);

// Assert
Assert.True(result);
}
}
49 changes: 49 additions & 0 deletions CourseApp.Tests/PlayersGeneratorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
namespace CourseApp.Tests;

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.Json;
using CourseApp.GeneratePlayers;
using CourseApp.Logger;
using CourseApp.SelectorGame;
using PlayerNames;
using Xunit;

[Collection("Sequential")]
public class PlayersGeneratorTest
{
[Theory]
[InlineData("1", "Да", "Да", "10")]
[InlineData("2", "Да", "Да", "12")]
[InlineData("3", "Да", "Да", "14")]
public void GeneratePlayersArrayTest(string number, string isAdd, string startChoicePlayers, string numberPlayers)
{
// Arrange
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine(number);
stringBuilder.AppendLine(isAdd);
stringBuilder.AppendLine(startChoicePlayers);
stringBuilder.AppendLine(numberPlayers);
var stringReader = new StringReader(stringBuilder.ToString());
Console.SetIn(stringReader);

Selector selector = new Selector(new GameLogger());
List<bool> newClasses = selector.SelectCustomClass();

const string filepath = @"/home/kiosk/Develop/Tprogramming_2022/CourseApp/Main/Names.json";
var json = File.ReadAllText(filepath);
var playerNames = JsonSerializer.Deserialize<List<Names>>(json);

int playerNumbers = selector.SelectNumbPlayers();

var playersGenerator = new PlayersGenerator(playerNumbers, playerNames, newClasses);

// Act
var players = playersGenerator.GeneratePlayersArray();

// Assert
Assert.NotEmpty(players);
}
}
77 changes: 77 additions & 0 deletions CourseApp.Tests/SelectorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
namespace CourseApp.Tests;

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using CourseApp.Logger;
using CourseApp.SelectorGame;
using Xunit;

[Collection("Sequential")]
public class SelectorTest
{
[Theory]
[InlineData("1", "Да", "Да")]
[InlineData("2", "Да", "Да")]
[InlineData("3", "Да", "Да")]
public void SelectCustomClassTest(string number, string isAdd, string startChoicePlayers)
{
// Arrange
var selector = new Selector(new GameLogger());
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine(number);
stringBuilder.AppendLine(isAdd);
stringBuilder.AppendLine(startChoicePlayers);
var stringReader = new StringReader(stringBuilder.ToString());
Console.SetIn(stringReader);

// Act
bool result = false;
List<bool> listBool = selector.SelectCustomClass();

foreach (var element in listBool)
{
result = element;

if (result == true)
{
break;
}
}

// Assert
Assert.True(result);
}

[Theory]
[InlineData("10")]
[InlineData("11", "12")]
[InlineData("12")]
public void SelectNumbPlayersTest(string number, string secondNumber = "14")
{
// Arrange
var selector = new Selector(new GameLogger());
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine(number);

if (!(int.Parse(number) % 2 == 0))
{
stringBuilder.AppendLine(secondNumber);
}

var stringReader = new StringReader(stringBuilder.ToString());
Console.SetIn(stringReader);

// Act
var result = false;
var player = selector.SelectNumbPlayers();
if (player % 2 == 0)
{
result = true;
}

// Assert
Assert.True(result);
}
}
32 changes: 32 additions & 0 deletions CourseApp/Entities/Abilities/FireArrows.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
namespace CourseApp.Abilities
{
using CourseApp.Effects;
using CourseApp.Players;

public class FireArrows : IAbility
{
public string AbilityName { get; set; } = "Огненные стрелы";

public int NumberUses { get; set; } = 0;

private int MaxUses { get; set; } = 1;

public void Spell(IPlayer myself, IPlayer enemy, int round)
{
enemy.MyEffects.Add(new LongDamage(5, round));
NumberUses++;
}

public bool CanSpell()
{
if (NumberUses < MaxUses)
{
return true;
}
else
{
return false;
}
}
}
}
Loading