97 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using NUnit.Framework; | ||
|  | using Unity.Multiplayer.Center.Common; | ||
|  | using Unity.Multiplayer.Center.Questionnaire; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace Unity.MultiplayerCenterTests | ||
|  | { | ||
|  |     [TestFixture] | ||
|  |     class LogicTests | ||
|  |     { | ||
|  |         [Test] | ||
|  |         public void TryGetQuestionByQuestionId_IdExists_Found() | ||
|  |         { | ||
|  |             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire(); | ||
|  |             var success = Logic.TryGetQuestionByQuestionId(questionnaire, questionnaire.Questions[1].Id, out var question); | ||
|  |             Assert.True(success); | ||
|  |             Assert.NotNull(question); | ||
|  |         } | ||
|  |          | ||
|  |         [Test] | ||
|  |         public void TryGetQuestionByQuestionId_StringIdExists_Found() | ||
|  |         { | ||
|  |             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire(); | ||
|  |             var success = Logic.TryGetQuestionByQuestionId(questionnaire, "Pace", out var question); | ||
|  |             Assert.True(success); | ||
|  |             Assert.NotNull(question); | ||
|  |         } | ||
|  |          | ||
|  |         [Test] | ||
|  |         public void TryGetQuestionByQuestionId_IdDoesNotExist_NotFound() | ||
|  |         { | ||
|  |             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire(); | ||
|  |             var success = Logic.TryGetQuestionByQuestionId(questionnaire, "nonexistent", out var question); | ||
|  |             Assert.False(success); | ||
|  |             Assert.Null(question); | ||
|  |         } | ||
|  | 
 | ||
|  |         [Test] | ||
|  |         public void TryGetAnswerByQuestionId_IdExists_Found() | ||
|  |         { | ||
|  |             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire(); | ||
|  |             var userAnswers = UtilsForRecommendationTests.BuildAnswerMatching(questionnaire); | ||
|  |             var success = Logic.TryGetAnswerByQuestionId(userAnswers, "PlayerCount", out var answer); | ||
|  |             Assert.True(success); | ||
|  |             Assert.NotNull(answer); | ||
|  |             Assert.AreEqual(1, answer.Answers.Count); | ||
|  |         } | ||
|  |          | ||
|  |         [Test] | ||
|  |         public void TryGetAnswerByQuestionId_IdDoesNotExist_NotFound() | ||
|  |         { | ||
|  |             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire(); | ||
|  |             var userAnswers = UtilsForRecommendationTests.BuildAnswerMatching(questionnaire); | ||
|  |             var success = Logic.TryGetAnswerByQuestionId(userAnswers, "nonexistent", out var answer); | ||
|  |             Assert.False(success); | ||
|  |             Assert.Null(answer); | ||
|  |         } | ||
|  |          | ||
|  |         [Test] | ||
|  |         public void TestApplyPresetToAnswerData_WhenPlayerCountIsSet_PlayerCountStays() | ||
|  |         { | ||
|  |             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire(); | ||
|  |             var userAnswers = UtilsForRecommendationTests.BuildAnswerMatching(questionnaire); | ||
|  |              | ||
|  |             Logic.TryGetAnswerByQuestionId(userAnswers, "PlayerCount", out var answer); | ||
|  |             var chosenPlayerCount = Int32.Parse(answer.Answers[0]); | ||
|  |              | ||
|  |             // No default answer, otherwise this test could succeed even if the logic is wrong | ||
|  |             Assert.AreNotEqual(0, chosenPlayerCount); | ||
|  |             Assert.AreNotEqual(2, chosenPlayerCount); | ||
|  | 
 | ||
|  |             var (newAnswer, newReco) = Logic.ApplyPresetToAnswerData(userAnswers, Preset.Strategy, questionnaire); | ||
|  |             Assert.NotNull(newAnswer); | ||
|  |             Logic.TryGetAnswerByQuestionId(newAnswer, "PlayerCount", out var newAnsweredQuestion); | ||
|  |             var newChosenPlayerCount = Int32.Parse(newAnsweredQuestion.Answers[0]); | ||
|  |             Assert.AreEqual(chosenPlayerCount, newChosenPlayerCount); | ||
|  |             Assert.NotNull(newReco); | ||
|  |         } | ||
|  |          | ||
|  |         [TestCase("1.2", "1.3", true)] | ||
|  |         [TestCase("3.2", "1.3", false)] | ||
|  |         [TestCase("1.21", "1.2", false)] | ||
|  |         [TestCase("1.2", "1.2", false)] | ||
|  |         [TestCase("0.2", "1.3", true)] | ||
|  |         [TestCase("1.3.12", "1.3.13", true)] | ||
|  |         [TestCase("1.3.11", "0.23", false)] | ||
|  |         [TestCase("3.3.33", "3.3.33", false)] | ||
|  |         [TestCase("3.3.3", "3.3.33", true)] | ||
|  |         public void TestIsVersionLower_ReturnsCorrectResult(string versionToTest, string currentVersion, params bool[] expected) | ||
|  |         { | ||
|  |             var result = Logic.IsVersionLower(versionToTest, currentVersion); | ||
|  |             Assert.AreEqual(expected[0], result); | ||
|  |         } | ||
|  |     } | ||
|  | } |