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);
|
||
|
}
|
||
|
}
|
||
|
}
|