Compare commits

..

24 Commits

Author SHA1 Message Date
Rami KHEDAIR 8c1fd7912a 📝 Readme
continuous-integration/drone/push Build is passing Details
1 year ago
Rami KHEDAIR 88dcb77439 Merge pull request 'lastBranch' (#9) from lastBranch into master
continuous-integration/drone/push Build is passing Details
1 year ago
Hugo LIVET 8d69915d21 Mise à jour de 'README.md'
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR 2003fedc51 dernier push
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR 21ee166715 Update 'code/server/Server/Room.cs'
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR b9a6abeff8 Update 'code/server/Server/Room.cs'
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR 547a298c21 quel que changement
continuous-integration/drone/push Build is passing Details
2 years ago
Hugo LIVET 3c5af17f49 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR 9ed29c5f21 first push
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA 94d79627be Merge branch 'master' of https://codefirst.iut.uca.fr/git/leap-hit-team/leap-hit-server
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA 4aad4968bb Essaye plusieurs rooms
2 years ago
Noan RANDON e9a5f70234 Update '.drone.yml'
continuous-integration/drone/push Build is passing Details
2 years ago
Noan RANDON 5030d0e7d4 Update '.drone.yml'
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR 652e18cede faire que dans 2min le partie soit fini
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA c210eab349 Compteur 2 minutes mis en place
continuous-integration/drone/push Build is passing Details
2 years ago
Noan07 44be783055 Merge branch 'master' of https://codefirst.iut.uca.fr/git/leap-hit-team/leap-hit-server
continuous-integration/drone/push Build is passing Details
2 years ago
Noan07 b2fff06bba 🔨 modif playerconnexion
2 years ago
Rami KHEDAIR 77dac0fc1f Merge branch 'master' of https://codefirst.iut.uca.fr/git/leap-hit-team/leap-hit-server
continuous-integration/drone/push Build is passing Details
2 years ago
Rami KHEDAIR 3121071b16 améilloration
2 years ago
Noan07 f1804432ac 🔨 ajout tests
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA 10f5bda5ac On fait maintenant en fonction du temps pour liberer le port, optimisatonnnn!!!
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA a1bbc0b034 Modification, maintenant on envoie un bool aussi pour savoir qui sera le host pour les coordonées de la balle
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA dbce60600a Merge branch 'master' of https://codefirst.iut.uca.fr/git/leap-hit-team/leap-hit-server
continuous-integration/drone/push Build is passing Details
2 years ago
Bruno DA COSTA CUNHA 7fa47ae47c Semaphores teste
2 years ago

@ -31,7 +31,7 @@ steps:
- cd code/server - cd code/server
- dotnet workload restore - dotnet workload restore
- dotnet restore Server.sln - dotnet restore Server.sln
- dotnet sonarscanner begin /k:PongSrv /d:sonar.host.url=$${PLUGIN_SONAR_HOST} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions="Tests/**" /d:sonar.login=$${PLUGIN_SONAR_TOKEN} - dotnet sonarscanner begin /k:PongSrv /d:sonar.host.url=$${PLUGIN_SONAR_HOST} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions="Tests/**,DataBase/Program.cs,DataBase/Migrations/**,DataBase/DataManager/**,DataBase/Context/PongDbContextWithStub.cs" /d:sonar.login=$${PLUGIN_SONAR_TOKEN}
- dotnet build Server.sln -c Release --no-restore - dotnet build Server.sln -c Release --no-restore
- dotnet test Server.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage" - dotnet test Server.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage"
- reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport"
@ -57,6 +57,7 @@ steps:
from_secret: SECRET_REGISTRY_USERNAME from_secret: SECRET_REGISTRY_USERNAME
password: password:
from_secret: SECRET_REGISTRY_PASSWORD from_secret: SECRET_REGISTRY_PASSWORD
depends_on: [tests]
# container deployment # container deployment
- name: deploy-server - name: deploy-server

@ -1 +1 @@
# LeapHitServer # LeapHitServer

@ -34,7 +34,7 @@ namespace ApiLeapHit.Controllers
do do
{ {
// Générer un id unique avec des chiffres et des lettres // Générer un id unique avec des chiffres et des lettres
id = Guid.NewGuid().ToString("N"); id = Guid.NewGuid().ToString("N").Substring(0, 6);
} }
while (await _dataManager.GetPlayer(id) != null); while (await _dataManager.GetPlayer(id) != null);
player.playerId = id; player.playerId = id;

@ -15,7 +15,15 @@ namespace DataBase.Context
public PongDbContext() { } public PongDbContext() { }
public PongDbContext(DbContextOptions<PongDbContext> options) : base(options) { } public PongDbContext(DbContextOptions<PongDbContext> options) : base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>().ToTable("Players");
modelBuilder.Entity<Game>().ToTable("Games");
modelBuilder.Entity<Message>().ToTable("Messages");
modelBuilder.Entity<Chat>().ToTable("Chats");
}
protected override async void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override async void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
base.OnConfiguring(optionsBuilder); base.OnConfiguring(optionsBuilder);
@ -35,13 +43,5 @@ namespace DataBase.Context
} }
} }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>().ToTable("Players");
modelBuilder.Entity<Game>().ToTable("Games");
modelBuilder.Entity<Message>().ToTable("Messages");
modelBuilder.Entity<Chat>().ToTable("Chats");
}
} }
} }

@ -19,7 +19,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientConsole", "ClientCons
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{CA1465F2-A006-4AF6-8231-59DB00963BD0}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{CA1465F2-A006-4AF6-8231-59DB00963BD0}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsDataBase", "TestsDataBase\TestsDataBase.csproj", "{BE7D3D6B-1CA1-47F9-93BE-0415708571AA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsDatabase", "TestsDatabase\TestsDatabase.csproj", "{EDAC56C7-0AC9-465A-A361-63347F435327}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -55,17 +55,17 @@ Global
{CA1465F2-A006-4AF6-8231-59DB00963BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.Build.0 = Release|Any CPU {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.Build.0 = Release|Any CPU
{BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EDAC56C7-0AC9-465A-A361-63347F435327}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Debug|Any CPU.Build.0 = Debug|Any CPU {EDAC56C7-0AC9-465A-A361-63347F435327}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Release|Any CPU.ActiveCfg = Release|Any CPU {EDAC56C7-0AC9-465A-A361-63347F435327}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Release|Any CPU.Build.0 = Release|Any CPU {EDAC56C7-0AC9-465A-A361-63347F435327}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{A9DFF203-7F27-44BA-A460-F65C01D0EDFD} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77} {A9DFF203-7F27-44BA-A460-F65C01D0EDFD} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77}
{BE7D3D6B-1CA1-47F9-93BE-0415708571AA} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77} {EDAC56C7-0AC9-465A-A361-63347F435327} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4BE2DC93-D511-4DA9-9C47-F286E71354BA} SolutionGuid = {4BE2DC93-D511-4DA9-9C47-F286E71354BA}

@ -38,9 +38,10 @@ public class PongServer
byte[] receivedData = serverSocket.Receive(ref remoteEndPoint); byte[] receivedData = serverSocket.Receive(ref remoteEndPoint);
string fileJson = Encoding.UTF8.GetString(receivedData); string fileJson = Encoding.UTF8.GetString(receivedData);
ObjectTransfert<Player> data = JsonSerializer.Deserialize<ObjectTransfert<Player>>(fileJson); ObjectTransfert<Player> data = JsonSerializer.Deserialize<ObjectTransfert<Player>>(fileJson);
if (data.Informations.Action == Shared.DTO.Action.Host) if (data.Informations.Action == Shared.DTO.Action.Host)
{ {
Host(data, remoteEndPoint, serverSocket, false); Host(data, remoteEndPoint, serverSocket, false);
} }
@ -48,7 +49,7 @@ public class PongServer
if (data.Informations.Action == Shared.DTO.Action.Join) if (data.Informations.Action == Shared.DTO.Action.Join)
{ {
var choisenRoom = rooms.FirstOrDefault(room => room.Key == data.Informations.IdRoom); var choisenRoom = rooms.FirstOrDefault(room => room.Key == data.Informations.IdRoom);
if(choisenRoom.Value != default && choisenRoom.Value.Availaible) if(choisenRoom.Value != default)
{ {
Join(data, remoteEndPoint, serverSocket, choisenRoom.Value); Join(data, remoteEndPoint, serverSocket, choisenRoom.Value);
} }
@ -61,7 +62,8 @@ public class PongServer
Console.WriteLine("Connection " + choisenRoom.Key); Console.WriteLine("Connection " + choisenRoom.Key);
if (choisenRoom.Value != default ) if (choisenRoom.Value != default )
{ {
Join(data, remoteEndPoint, serverSocket, choisenRoom.Value); Join(data, remoteEndPoint, serverSocket, choisenRoom.Value);
} }
else else
{ {
@ -69,6 +71,7 @@ public class PongServer
} }
} }
Console.WriteLine("");
} }
@ -76,11 +79,20 @@ public class PongServer
private void Host(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, bool availaible) private void Host(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, bool availaible)
{ {
var choisenRoom = rooms.FirstOrDefault(room => room.Value.Free);
var chosenPort = nextPort;
if (choisenRoom.Value != default)
{
chosenPort= choisenRoom.Value.Port;
rooms.Remove(choisenRoom.Key);
choisenRoom = default;
}
Room room = new Room(data.Data.playerId, availaible); Room room = new Room(data.Data.playerId, availaible);
// Assign a unique port to the client // Assign a unique port to the client
IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort); IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, chosenPort);
UdpClient clientSocket = new UdpClient(clientEndPoint); UdpClient clientSocket = new UdpClient(clientEndPoint);
room.playerHost = new KeyValuePair<Player,UdpClient>(data.Data,clientSocket); room.playerHost = new KeyValuePair<Player,UdpClient>(data.Data,clientSocket);
@ -91,37 +103,47 @@ public class PongServer
Console.WriteLine("New connection Host From " + remoteEndPoint.ToString()); Console.WriteLine("New connection Host From " + remoteEndPoint.ToString());
room.Port = nextPort; room.Port = chosenPort;
nextPort++; if(chosenPort==nextPort)
{
nextPort++;
}
Tuple<int, bool> dataToSend = new Tuple<int, bool>(room.Port, true);
Console.WriteLine(JsonSerializer.Serialize(dataToSend));
// Send port message to client // Send port message to client
byte[] connectionData = Encoding.ASCII.GetBytes(room.Port.ToString()); byte[] connectionData = Encoding.ASCII.GetBytes(JsonSerializer.Serialize(dataToSend));
serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint);
rooms[data.Data.playerId] = room; rooms[data.Data.playerId] = room;
room.PropertyChanged += room.OnReadyChanged;
Console.WriteLine("FIN HOST...............");
} }
private void Join(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, Room room) private void Join(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, Room room)
{ {
room.playerJoin = new KeyValuePair<Player, UdpClient>(data.Data, room.playerHost.Value); room.playerJoin = new KeyValuePair<Player, UdpClient>(data.Data, room.playerHost.Value);
Console.WriteLine("New connection Client from " + remoteEndPoint.ToString()); Console.WriteLine("New connection Client from " + remoteEndPoint.ToString());
Tuple<int, bool> dataToSend = new Tuple<int, bool>(room.Port, false);
Console.WriteLine(JsonSerializer.Serialize(dataToSend));
// Send port message to client // Send port message to client
byte[] connectionData = Encoding.ASCII.GetBytes(room.Port.ToString()); byte[] connectionData = Encoding.ASCII.GetBytes(JsonSerializer.Serialize(dataToSend));
serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint);
room.PropertyChanged += room.OnReadyChanged; room.PropertyChanged += room.OnReadyChanged;
room.NbPlayer++; room.NbPlayer++;
Console.WriteLine("FIN JOIN...............");
} }
} }

@ -5,6 +5,7 @@ using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using DataBase.Entity; using DataBase.Entity;
using Shared.DTO;
using System.Text.Json; using System.Text.Json;
using Server; using Server;

@ -9,6 +9,7 @@ using System.Threading.Tasks;
using Shared.DTO; using Shared.DTO;
using System.ComponentModel; using System.ComponentModel;
using System.Text.Json; using System.Text.Json;
using static System.Formats.Asn1.AsnWriter;
namespace Server namespace Server
{ {
@ -20,9 +21,14 @@ namespace Server
Id = id; Id = id;
Availaible = availaible; Availaible = availaible;
} }
Tuple<int, int> ScoreImp = new(0, 0);
ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>> data ;
public bool Availaible { get; set; } public bool Availaible { get; set; }
public bool Free { get; set; }=false;
public event PropertyChangedEventHandler? PropertyChanged; public event PropertyChangedEventHandler? PropertyChanged;
public string Id { get; set; } public string Id { get; set; }
@ -30,6 +36,7 @@ namespace Server
public KeyValuePair <Player, UdpClient> playerHost; public KeyValuePair <Player, UdpClient> playerHost;
public KeyValuePair <Player, UdpClient> playerJoin; public KeyValuePair <Player, UdpClient> playerJoin;
public int Port { get; set; } public int Port { get; set; }
public bool gameRunning=true ;
public int NbPlayer public int NbPlayer
@ -57,69 +64,131 @@ namespace Server
public void ReceiveMessages(UdpClient clientSocket1, UdpClient clientSocket2, IPEndPoint endpoint2, SemaphoreSlim semaphore) public void ReceiveMessages(UdpClient clientSocket1, UdpClient clientSocket2, IPEndPoint endpoint2, Semaphore semaphore,bool isHost)
{ {
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
while (true) Thread secondsCount = new Thread(() => CountSeconds() );
{ bool isDisconected=false;
byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint); secondsCount.Start();
semaphore.Wait();
clientSocket2.Send(receivedData, receivedData.Length, endpoint2);
semaphore.Release();
while ((ScoreImp.Item1<6 && ScoreImp.Item2 < 6) && gameRunning)
{
try
{
byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint);
if (isHost) {
string fileJson = Encoding.UTF8.GetString(receivedData);
try
{
data = JsonSerializer.Deserialize<ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>>>(fileJson);
ScoreImp = data.Data.Item2 != null ? data.Data.Item2 : ScoreImp;
}
catch (Exception ex) { }
}
semaphore.WaitOne();
clientSocket2.Send(receivedData, receivedData.Length, endpoint2);
semaphore.Release();
} catch (SocketException){
try
{
semaphore.Release();
}catch { }
isDisconected = true;
break;
}
}
//Tuple<GameEntities, Tuple<int, int>> game = new Tuple<GameEntities, Tuple<int, int>>(new GameEntities(new Tuple<float,float>(0,0),0), ScoreImp);
/* ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>> data2 = new ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>>() {
Informations = new Informations(Shared.DTO.Action.End, 0, typeof(Tuple<GameEntities, Tuple<int, int>>).ToString()),
Data = game
};*/
if (!isDisconected)
{
data.Informations.Action = Shared.DTO.Action.End;
string sendFinish = JsonSerializer.Serialize(data);
byte[] sendFinishByt = Encoding.ASCII.GetBytes(sendFinish);
try
{
clientSocket2.Send(sendFinishByt, sendFinishByt.Length, endpoint2);
}
catch (Exception ex) { }
}
if (isHost)
{
try
{
semaphore.Release();
}
catch { }
playerJoin.Value.Close();
}
else
{
playerHost.Value.Close();
} }
Free = true;
Console.WriteLine("Game Finished Am i host " + isHost);
} }
public void OnReadyChanged(object sender, PropertyChangedEventArgs e) private void CountSeconds()
{ {
int seconds = 0;
while (seconds<=122)
{
seconds++;
Thread.Sleep(1000);
}
gameRunning = false;
}
Room room = sender as Room; async public void OnReadyChanged(object sender, PropertyChangedEventArgs e)
int maxPlayer = room.nbPlayer; {
await Task.Run(() =>
//IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, Port); {
//UdpClient serverSocket = new UdpClient(serverEndPoint); Room room = sender as Room;
int maxPlayer = room.nbPlayer;
if (maxPlayer == 2) if (maxPlayer == 2)
{ {
IPEndPoint remoteEndPointHost = new IPEndPoint(IPAddress.Any, room.Port); room.Availaible = false;
IPEndPoint remoteEndPointJoin = new IPEndPoint(IPAddress.Any, room.Port); IPEndPoint remoteEndPointHost = new IPEndPoint(IPAddress.Any, room.Port);
IPEndPoint remoteEndPointJoin = new IPEndPoint(IPAddress.Any, room.Port);
byte[] receivedDataHost = playerHost.Value.Receive(ref remoteEndPointHost); byte[] receivedDataHost = playerHost.Value.Receive(ref remoteEndPointHost);
byte[] receivedDataJoin = playerJoin.Value.Receive(ref remoteEndPointJoin); byte[] receivedDataJoin = playerJoin.Value.Receive(ref remoteEndPointJoin);
playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPointHost);
playerHost.Value.Send(receivedDataJoin, receivedDataJoin.Length, remoteEndPointJoin);
SemaphoreSlim semaphore = new SemaphoreSlim(0); playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPointHost);
playerHost.Value.Send(receivedDataJoin, receivedDataJoin.Length, remoteEndPointJoin);
Semaphore semaphore = new Semaphore(2, 2);
Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value, remoteEndPointJoin, semaphore));
Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value, remoteEndPointJoin, semaphore,true));
Thread receiveThread2 = new Thread(() => {
// Attente pour que le joueur 1 ait envoyé ses données avant de démarrer la réception des données du joueur 2
semaphore.Wait();
ReceiveMessages(playerJoin.Value, playerHost.Value, remoteEndPointHost, semaphore);
});
receiveThread1.Start();
receiveThread2.Start();
semaphore.Release(); Thread receiveThread2 = new Thread(() =>
{
ReceiveMessages(playerJoin.Value, playerHost.Value, remoteEndPointHost, semaphore,false);
});
receiveThread1.Start();
receiveThread2.Start();
receiveThread1.Join();
receiveThread2.Join();
receiveThread1.Join();
} receiveThread2.Join();
}
});
} }
} }
} }

@ -15,6 +15,7 @@ namespace Shared.DTO
SendPlayer, SendPlayer,
RecivePlayer, RecivePlayer,
SendEntities SendEntities,
SendScore
} }
} }

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.DTO
{
public class GameEntities
{
public Tuple<float, float> Ball { get; set; }
public float Paddle { get; set; }
public GameEntities(Tuple<float, float> ball, float paddle)
{
Ball = ball;
Paddle = paddle;
}
}
}

@ -4,13 +4,12 @@ using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TestsDataBase namespace TestsDatabase
{ {
public class TestChat public class TestsChat
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="xunit" Version="2.4.2" /> <PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5"> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">

@ -4,13 +4,13 @@ using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices; using System.Numerics;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TestsDataBase namespace TestsDatabase
{ {
public class TestGame public class TestsGame
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()
@ -147,4 +147,4 @@ namespace TestsDataBase
} }
} }
} }
} }

@ -6,11 +6,10 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using xunit;
namespace TestsDataBase namespace TestsDatabase
{ {
public class TestMessage public class TestsMessage
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()
@ -25,7 +24,7 @@ namespace TestsDataBase
Player player2 = new Player { playerId = "Rami12345", name = "The Lady", nbBallTouchTotal = 8, timePlayed = 2 }; Player player2 = new Player { playerId = "Rami12345", name = "The Lady", nbBallTouchTotal = 8, timePlayed = 2 };
Chat chat = new Chat { chatId = 1, player1 = "Loris12345", player2 = "Rami12345", PlayerId1 = player, PlayerId2 = player2 }; Chat chat = new Chat { chatId = 1, player1 = "Loris12345", player2 = "Rami12345", PlayerId1 = player, PlayerId2 = player2 };
Message message = new Message { messageId = 1, ChatId = chat, message = "message", chat = 1, player = "Loris12345", PlayerId = player, timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc) }; Message message = new Message { messageId = 1, ChatId = chat, message = "message", chat = 1, player = "Loris12345", PlayerId = player, timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc) };
context.Messages.Add(message); context.Messages.Add(message);
context.SaveChanges(); context.SaveChanges();
} }
@ -142,4 +141,3 @@ namespace TestsDataBase
} }
} }
} }

@ -1,10 +1,15 @@
using DataBase.Context; using DataBase.Context;
using DataBase.Entity; using DataBase.Entity;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestsDataBase namespace TestsDatabase
{ {
public class TestPlayer public class TestsPlayer
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()
@ -126,4 +131,4 @@ namespace TestsDataBase
} }
} }
} }
} }
Loading…
Cancel
Save