UnityGame/Library/PackageCache/com.unity.multiplayer.center/Tests/Editor/LogicTests.cs

97 lines
4.1 KiB
C#
Raw Normal View History

2024-10-27 10:53:47 +03:00
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);
}
}
}