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