diff --git a/src/Tests/UnitTestsModel/ActivityTest.cs b/src/Tests/UnitTestsModel/ActivityTest.cs
index 94be218..df8e2dd 100644
--- a/src/Tests/UnitTestsModel/ActivityTest.cs
+++ b/src/Tests/UnitTestsModel/ActivityTest.cs
@@ -1,152 +1,166 @@
+//-----------------------------------------------------------------------
+// FILENAME: ActivityTests.cs
+// PROJECT: UnitTestsModel
+// DATE CREATED: 16/03/2024
+// AUTHOR: HeartTeam
+// PURPOSE: Contains unit tests for the Activity class in the Model namespace.
+//-----------------------------------------------------------------------
+
using System;
using System.Collections.Generic;
using Model;
using Xunit;
-namespace UnitTestsModel;
-public class ActivityTests
+namespace UnitTestsModel
{
- [Fact]
- public void Constructor_WithValidEffort_SetsEffort()
+ ///
+ /// Contains unit tests for the class.
+ ///
+ public class ActivityTests
{
- // Arrange
- var date = DateTime.Now;
- var validEffort = 3;
+ ///
+ /// Verifies that the constructor sets the effort property correctly when a valid effort is provided.
+ ///
+ [Fact]
+ public void Constructor_WithValidEffort_SetsEffort()
+ {
+ var date = DateTime.Now;
+ var validEffort = 3;
- // Act
- var activity = new Activity(
- id: 1,
- type: "Running",
- date: date,
- startTime: date.AddHours(1),
- endTime: date.AddHours(2),
- effort: validEffort,
- variability: 0.5f,
- variance: 0.3f,
- standardDeviation: 0.2f,
- average: 150,
- maximum: 180,
- minimum: 120,
- averageTemperature: 25.5f,
- hasAutoPause: false,
- user: new User(),
- dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()),
- heartRates: null
- );
+ var activity = new Activity(
+ id: 1,
+ type: "Running",
+ date: date,
+ startTime: date.AddHours(1),
+ endTime: date.AddHours(2),
+ effort: validEffort,
+ variability: 0.5f,
+ variance: 0.3f,
+ standardDeviation: 0.2f,
+ average: 150,
+ maximum: 180,
+ minimum: 120,
+ averageTemperature: 25.5f,
+ hasAutoPause: false,
+ user: new User(),
+ dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()),
+ heartRates: null
+ );
- // Assert
- Assert.Equal(validEffort, activity.Effort);
- }
+ Assert.Equal(validEffort, activity.Effort);
+ }
- [Fact]
- public void Constructor_WithInvalidEffort_ThrowsArgumentException()
- {
- // Arrange
- var date = DateTime.Now;
- var invalidEffort = 6;
+ ///
+ /// Verifies that the constructor throws an ArgumentException when an invalid effort is provided.
+ ///
+ [Fact]
+ public void Constructor_WithInvalidEffort_ThrowsArgumentException()
+ {
+ var date = DateTime.Now;
+ var invalidEffort = 6;
- // Act & Assert
- Assert.Throws(() => new Activity(
- id: 1,
- type: "Running",
- date: date,
- startTime: date.AddHours(1),
- endTime: date.AddHours(2),
- effort: invalidEffort,
- variability: 0.5f,
- variance: 0.3f,
- standardDeviation: 0.2f,
- average: 150,
- maximum: 180,
- minimum: 120,
- averageTemperature: 25.5f,
- hasAutoPause: false,
- user: new User(),
- dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()),
- heartRates: null
- ));
- }
+ Assert.Throws(() => new Activity(
+ id: 1,
+ type: "Running",
+ date: date,
+ startTime: date.AddHours(1),
+ endTime: date.AddHours(2),
+ effort: invalidEffort,
+ variability: 0.5f,
+ variance: 0.3f,
+ standardDeviation: 0.2f,
+ average: 150,
+ maximum: 180,
+ minimum: 120,
+ averageTemperature: 25.5f,
+ hasAutoPause: false,
+ user: new User(),
+ dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()),
+ heartRates: null
+ ));
+ }
- [Fact]
- public void ToString_ReturnsExpectedString()
- {
- // Arrange
- var date = new DateTime(2023, 3, 16, 10, 0, 0);
- var activity = new Activity(
- id: 1,
- type: "Running",
- date: date,
- startTime: date.AddHours(1),
- endTime: date.AddHours(2),
- effort: 3,
- variability: 0.5f,
- variance: 0.3f,
- standardDeviation: 0.2f,
- average: 150,
- maximum: 180,
- minimum: 120,
- averageTemperature: 25.5f,
- hasAutoPause: false,
- user: new User(),
- dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()),
- heartRates: null
- );
+ ///
+ /// Verifies that the ToString method returns the expected string representation of the activity.
+ ///
+ [Fact]
+ public void ToString_ReturnsExpectedString()
+ {
+ var date = new DateTime(2023, 3, 16, 10, 0, 0);
+ var activity = new Activity(
+ id: 1,
+ type: "Running",
+ date: date,
+ startTime: date.AddHours(1),
+ endTime: date.AddHours(2),
+ effort: 3,
+ variability: 0.5f,
+ variance: 0.3f,
+ standardDeviation: 0.2f,
+ average: 150,
+ maximum: 180,
+ minimum: 120,
+ averageTemperature: 25.5f,
+ hasAutoPause: false,
+ user: new User(),
+ dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()),
+ heartRates: null
+ );
- // Act
- var result = activity.ToString();
+ var result = activity.ToString();
- // Assert
- Assert.Contains("Activity #1: Running on 16/3/2023 from 11:00:00 to 12:00:00", result);
- }
+ Assert.Contains("Activity #1: Running on 16/3/2023 from 11:00:00 to 12:00:00", result);
+ }
- [Fact]
- public void Constructor_SetsPropertiesCorrectly()
- {
- // Arrange
- var date = DateTime.Now;
- var user = new User();
- var dataSource = new DataSource(1, "Type", "Model", 0.1f, new List(), new List());
- var heartRates = new List();
+ ///
+ /// Verifies that the constructor sets all properties correctly.
+ ///
+ [Fact]
+ public void Constructor_SetsPropertiesCorrectly()
+ {
+ var date = DateTime.Now;
+ var user = new User();
+ var dataSource = new DataSource(1, "Type", "Model", 0.1f, new List(), new List());
+ var heartRates = new List();
- // Act
- var activity = new Activity(
- id: 1,
- type: "Running",
- date: date,
- startTime: date.AddHours(1),
- endTime: date.AddHours(2),
- effort: 3,
- variability: 0.5f,
- variance: 0.3f,
- standardDeviation: 0.2f,
- average: 150,
- maximum: 180,
- minimum: 120,
- averageTemperature: 25.5f,
- hasAutoPause: false,
- user: user,
- dataSource: dataSource,
- heartRates: heartRates
- );
+ var activity = new Activity(
+ id: 1,
+ type: "Running",
+ date: date,
+ startTime: date.AddHours(1),
+ endTime: date.AddHours(2),
+ effort: 3,
+ variability: 0.5f,
+ variance: 0.3f,
+ standardDeviation: 0.2f,
+ average: 150,
+ maximum: 180,
+ minimum: 120,
+ averageTemperature: 25.5f,
+ hasAutoPause: false,
+ user: user,
+ dataSource: dataSource,
+ heartRates: heartRates
+ );
- // Assert
- Assert.Equal(1, activity.Id);
- Assert.Equal("Running", activity.Type);
- Assert.Equal(date, activity.Date);
- Assert.Equal(date.AddHours(1), activity.StartTime);
- Assert.Equal(date.AddHours(2), activity.EndTime);
- Assert.Equal(3, activity.Effort);
- Assert.Equal(0.5f, activity.Variability);
- Assert.Equal(0.3f, activity.Variance);
- Assert.Equal(0.2f, activity.StandardDeviation);
- Assert.Equal(150, activity.Average);
- Assert.Equal(180, activity.Maximum);
- Assert.Equal(120, activity.Minimum);
- Assert.Equal(25.5f, activity.AverageTemperature);
- Assert.False(activity.HasAutoPause);
- Assert.Equal(user, activity.Athlete);
- Assert.Equal(dataSource, activity.DataSource);
- Assert.Equal(heartRates, activity.HeartRates);
- }
+ Assert.Equal(1, activity.Id);
+ Assert.Equal("Running", activity.Type);
+ Assert.Equal(date, activity.Date);
+ Assert.Equal(date.AddHours(1), activity.StartTime);
+ Assert.Equal(date.AddHours(2), activity.EndTime);
+ Assert.Equal(3, activity.Effort);
+ Assert.Equal(0.5f, activity.Variability);
+ Assert.Equal(0.3f, activity.Variance);
+ Assert.Equal(0.2f, activity.StandardDeviation);
+ Assert.Equal(150, activity.Average);
+ Assert.Equal(180, activity.Maximum);
+ Assert.Equal(120, activity.Minimum);
+ Assert.Equal(25.5f, activity.AverageTemperature);
+ Assert.False(activity.HasAutoPause);
+ Assert.Equal(user, activity.Athlete);
+ Assert.Equal(dataSource, activity.DataSource);
+ Assert.Equal(heartRates, activity.HeartRates);
+ }
-}
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/AthleteTest.cs b/src/Tests/UnitTestsModel/AthleteTest.cs
new file mode 100644
index 0000000..4b90322
--- /dev/null
+++ b/src/Tests/UnitTestsModel/AthleteTest.cs
@@ -0,0 +1,49 @@
+using Model;
+using Xunit;
+
+namespace Model.Tests
+{
+ public class AthleteTests
+ {
+ [Fact]
+ public void CheckAdd_ValidUser_ReturnsTrue()
+ {
+ // Arrange
+ var athlete = new Athlete();
+
+ // Act
+ var user = new User();
+ var result = athlete.CheckAdd(user);
+
+ // Assert
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void CheckAdd_NullUser_ReturnsFalse()
+ {
+ // Arrange
+ var athlete = new Athlete();
+
+ // Act
+ var result = athlete.CheckAdd(null);
+
+ // Assert
+ Assert.False(result);
+ }
+
+ [Fact]
+ public void CheckAdd_NonAthleteUser_ReturnsFalse()
+ {
+ // Arrange
+ var athlete = new Athlete();
+
+ // Act
+ var user = new User { Role = new Coach() }; // Assuming Coach inherits from Role
+ var result = athlete.CheckAdd(user);
+
+ // Assert
+ Assert.False(result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/CoachTest.cs b/src/Tests/UnitTestsModel/CoachTest.cs
new file mode 100644
index 0000000..c54f4c4
--- /dev/null
+++ b/src/Tests/UnitTestsModel/CoachTest.cs
@@ -0,0 +1,49 @@
+using Model;
+using Xunit;
+
+namespace Model.Tests
+{
+ public class CoachTests
+ {
+ [Fact]
+ public void CheckAdd_AthleteUser_ReturnsTrue()
+ {
+ // Arrange
+ var coach = new Coach();
+
+ // Act
+ var user = new User { Role = new Athlete() };
+ var result = coach.CheckAdd(user);
+
+ // Assert
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void CheckAdd_NonAthleteUser_ReturnsFalse()
+ {
+ // Arrange
+ var coach = new Coach();
+
+ // Act
+ var user = new User { Role = new Coach() };
+ var result = coach.CheckAdd(user);
+
+ // Assert
+ Assert.False(result);
+ }
+
+ [Fact]
+ public void CheckAdd_NullUser_ReturnsFalse()
+ {
+ // Arrange
+ var coach = new Coach();
+
+ // Act
+ var result = coach.CheckAdd(null);
+
+ // Assert
+ Assert.False(result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/DataSource.cs b/src/Tests/UnitTestsModel/DataSource.cs
new file mode 100644
index 0000000..21cad2d
--- /dev/null
+++ b/src/Tests/UnitTestsModel/DataSource.cs
@@ -0,0 +1,32 @@
+using Model;
+using System.Collections.Generic;
+using Xunit;
+
+namespace Model.Tests
+{
+ public class DataSourceTests
+ {
+ [Fact]
+ public void Constructor_WithArguments_InitializesProperties()
+ {
+ // Arrange
+ var id = 1;
+ var type = "Type";
+ var model = "Model";
+ var precision = 0.5f;
+ var athletes = new List();
+ var activities = new List();
+
+ // Act
+ var dataSource = new DataSource(id, type, model, precision, athletes, activities);
+
+ // Assert
+ Assert.Equal(id, dataSource.Id);
+ Assert.Equal(type, dataSource.Type);
+ Assert.Equal(model, dataSource.Model);
+ Assert.Equal(precision, dataSource.Precision);
+ Assert.Same(athletes, dataSource.Athletes);
+ Assert.Same(activities, dataSource.Activities);
+ }
+ }
+}
diff --git a/src/Tests/UnitTestsModel/GlobalUsings.cs b/src/Tests/UnitTestsModel/GlobalUsings.cs
deleted file mode 100644
index 8c927eb..0000000
--- a/src/Tests/UnitTestsModel/GlobalUsings.cs
+++ /dev/null
@@ -1 +0,0 @@
-global using Xunit;
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/HeartRateTest.cs b/src/Tests/UnitTestsModel/HeartRateTest.cs
new file mode 100644
index 0000000..bfdcae7
--- /dev/null
+++ b/src/Tests/UnitTestsModel/HeartRateTest.cs
@@ -0,0 +1,73 @@
+using Xunit;
+using System;
+
+namespace Model.Tests
+{
+ public class HeartRateTests
+ {
+ [Fact]
+ public void HeartRate_Constructor_WithValidParameters()
+ {
+ // Arrange
+ int id = 1;
+ int bpm = 80;
+ TimeOnly timestamp = new TimeOnly(12, 30, 0);
+ Activity activity = new Activity();
+ double? latitude = 40.7128;
+ double? longitude = -74.0060;
+ double? altitude = 10.5;
+ int? cadence = 120;
+ double? distance = 5.2;
+ double? speed = 10.5;
+ int? power = 200;
+ double? temperature = 25.5;
+
+ // Act
+ var heartRate = new HeartRate(id, bpm, timestamp, activity, latitude, longitude, altitude, cadence, distance, speed, power, temperature);
+
+ // Assert
+ Assert.Equal(id, heartRate.Id);
+ Assert.Equal(bpm, heartRate.Bpm);
+ Assert.Equal(timestamp, heartRate.Timestamp);
+ Assert.Equal(activity, heartRate.Activity);
+ Assert.Equal(latitude, heartRate.Latitude);
+ Assert.Equal(longitude, heartRate.Longitude);
+ Assert.Equal(altitude, heartRate.Altitude);
+ Assert.Equal(cadence, heartRate.Cadence);
+ Assert.Equal(distance, heartRate.Distance);
+ Assert.Equal(speed, heartRate.Speed);
+ Assert.Equal(power, heartRate.Power);
+ Assert.Equal(temperature, heartRate.Temperature);
+ }
+
+ [Fact]
+ public void HeartRate_ToString_ReturnsExpectedString()
+ {
+ // Arrange
+ int id = 1;
+ int bpm = 80;
+ TimeOnly timestamp = new TimeOnly(12, 30, 0);
+ Activity activity = new Activity();
+ double? latitude = 40.7128;
+ double? longitude = -74.0060;
+ double? altitude = 10.5;
+ int? cadence = 120;
+ double? distance = 5.2;
+ double? speed = 10.5;
+ int? power = 200;
+ double? temperature = 25.5;
+ var heartRate = new HeartRate(id, bpm, timestamp, activity, latitude, longitude, altitude, cadence, distance, speed, power, temperature);
+
+ // Act
+ var result = heartRate.ToString();
+
+ // Assert
+ Assert.Contains($"HeartRate #{id}", result);
+ Assert.Contains($"{bpm} bpm", result);
+ Assert.Contains($"{timestamp:HH:mm:ss}", result);
+ Assert.Contains($"temperature of {temperature}°C", result);
+ Assert.Contains($"altitude of {altitude}m", result);
+ Assert.Contains($"at {longitude}°E and {latitude}°N", result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/LargeImageTest.cs b/src/Tests/UnitTestsModel/LargeImageTest.cs
new file mode 100644
index 0000000..d1f5552
--- /dev/null
+++ b/src/Tests/UnitTestsModel/LargeImageTest.cs
@@ -0,0 +1,38 @@
+using Xunit;
+
+namespace Model.Tests
+{
+ public class LargeImageTests
+ {
+ [Fact]
+ public void Equals_ReturnsTrue_WhenBase64StringsAreEqual()
+ {
+ // Arrange
+ var base64String = "VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZw==";
+ var image1 = new LargeImage(base64String);
+ var image2 = new LargeImage(base64String);
+
+ // Act
+ var result = image1.Equals(image2);
+
+ // Assert
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void Equals_ReturnsFalse_WhenBase64StringsAreDifferent()
+ {
+ // Arrange
+ var base64String1 = "VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZw==";
+ var base64String2 = "VGhpcyBpcyBhIGJhc2U2NSBlbmNvZGVkIHN0cmluZw==";
+ var image1 = new LargeImage(base64String1);
+ var image2 = new LargeImage(base64String2);
+
+ // Act
+ var result = image1.Equals(image2);
+
+ // Assert
+ Assert.False(result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/NotificationTest.cs b/src/Tests/UnitTestsModel/NotificationTest.cs
new file mode 100644
index 0000000..fc9fbd1
--- /dev/null
+++ b/src/Tests/UnitTestsModel/NotificationTest.cs
@@ -0,0 +1,30 @@
+using Xunit;
+
+namespace Model.Tests
+{
+ public class NotificationTests
+ {
+ [Fact]
+ public void Constructor_InitializesPropertiesCorrectly()
+ {
+ // Arrange
+ int id = 1;
+ string message = "Test notification";
+ DateTime date = DateTime.Now;
+ bool status = false;
+ string urgency = "High";
+ int toUserId = 10;
+
+ // Act
+ var notification = new Notification(id, message, date, status, urgency, toUserId);
+
+ // Assert
+ Assert.Equal(id, notification.IdNotif);
+ Assert.Equal(message, notification.Message);
+ Assert.Equal(date, notification.Date);
+ Assert.Equal(status, notification.Statut);
+ Assert.Equal(urgency, notification.Urgence);
+ Assert.Equal(toUserId, notification.ToUserId);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/RelationshipTest.cs b/src/Tests/UnitTestsModel/RelationshipTest.cs
new file mode 100644
index 0000000..b55d08c
--- /dev/null
+++ b/src/Tests/UnitTestsModel/RelationshipTest.cs
@@ -0,0 +1,31 @@
+using Xunit;
+
+namespace Model.Tests
+{
+ public class RelationshipRequestTests
+ {
+ [Fact]
+ public void Constructor_InitializesPropertiesCorrectly()
+ {
+ // Arrange
+ int id = 1;
+ int fromUserId = 2;
+ int toUserId = 3;
+ string status = "Pending";
+
+ // Act
+ var request = new RelationshipRequest
+ {
+ Id = id,
+ FromUser = fromUserId,
+ ToUser = toUserId
+ };
+
+ // Assert
+ Assert.Equal(id, request.Id);
+ Assert.Equal(fromUserId, request.FromUser);
+ Assert.Equal(toUserId, request.ToUser);
+ Assert.Equal(status, request.Status);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/RoleTest.cs b/src/Tests/UnitTestsModel/RoleTest.cs
new file mode 100644
index 0000000..aa9c0a5
--- /dev/null
+++ b/src/Tests/UnitTestsModel/RoleTest.cs
@@ -0,0 +1,36 @@
+using Xunit;
+
+namespace Model.Tests
+{
+ public class RoleTests
+ {
+ [Fact]
+ public void AddUser_WithValidUser_ReturnsTrue()
+ {
+ // Arrange
+ var role = new Athlete(); // Vous pouvez utiliser Athlete ou Coach selon votre besoin
+ var user = new User(); // Créez un objet User valide
+
+ // Act
+ bool result = role.AddUser(user);
+
+ // Assert
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void AddUser_WithInvalidUser_ReturnsFalse()
+ {
+ // Arrange
+ var role = new Athlete(); // Vous pouvez utiliser Athlete ou Coach selon votre besoin
+ var user = new User(); // Créez un objet User invalide
+
+ // Act
+ bool result = role.AddUser(user);
+
+ // Assert
+ Assert.False(result);
+ }
+
+ }
+}
diff --git a/src/Tests/UnitTestsModel/UnitTest1.cs b/src/Tests/UnitTestsModel/UnitTest1.cs
deleted file mode 100644
index 0018230..0000000
--- a/src/Tests/UnitTestsModel/UnitTest1.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace UnitTestsModel;
-
-public class UnitTest1
-{
- [Fact]
- public void Test1()
- {
-
- }
-}
\ No newline at end of file
diff --git a/src/Tests/UnitTestsModel/UserTest.cs b/src/Tests/UnitTestsModel/UserTest.cs
new file mode 100644
index 0000000..efd95a8
--- /dev/null
+++ b/src/Tests/UnitTestsModel/UserTest.cs
@@ -0,0 +1,41 @@
+using Xunit;
+
+namespace Model.Tests
+{
+ public class UserTests
+ {
+ [Fact]
+ public void UserConstructor_ValidParameters_ConstructsObject()
+ {
+ // Arrange
+ string username = "john_doe";
+ string profilePicture = "profile.jpg";
+ string lastName = "Doe";
+ string firstName = "John";
+ string email = "john.doe@example.com";
+ string password = "password";
+ string sex = "Male";
+ float length = 180.5f;
+ float weight = 75.3f;
+ DateTime dateOfBirth = new DateTime(1990, 5, 15);
+ Role role = new Athlete(); // You can change this to the appropriate role
+
+ // Act
+ User user = new User(username, profilePicture, lastName, firstName, email, password, sex, length, weight, dateOfBirth, role);
+
+ // Assert
+ Assert.NotNull(user);
+ Assert.Equal(username, user.Username);
+ Assert.Equal(profilePicture, user.ProfilePicture);
+ Assert.Equal(lastName, user.LastName);
+ Assert.Equal(firstName, user.FirstName);
+ Assert.Equal(email, user.Email);
+ Assert.Equal(password, user.MotDePasse);
+ Assert.Equal(sex, user.Sexe);
+ Assert.Equal(length, user.Lenght);
+ Assert.Equal(weight, user.Weight);
+ Assert.Equal(dateOfBirth, user.DateOfBirth);
+ Assert.Equal(role, user.Role);
+ }
+ }
+}
\ No newline at end of file