UnityGame/Library/PackageCache/com.unity.multiplayer.center/Tests/Editor/UserVisibleTextTests.cs
2024-10-27 10:53:47 +03:00

71 lines
3.1 KiB
C#

using System.Linq;
using NUnit.Framework;
using Unity.Multiplayer.Center.Recommendations;
namespace Unity.MultiplayerCenterTests
{
/// <summary>
/// Cheap checks on some user visible text.
/// </summary>
[TestFixture]
internal class UserVisibleTextTests
{
static readonly string[] k_Verbs = {"is", "offers", "can", "costs", "would", "should", "works", "tends", "enables"};
[Test]
public void AllScoreImpacts_ShouldHaveANonEmptyReason()
{
var questionnaireData = UtilsForRecommendationTests.GetProjectQuestionnaire();
foreach (var question in questionnaireData.Questions)
{
foreach (var answer in question.Choices)
{
for (var index = 0; index < answer.ScoreImpacts.Length; index++)
{
var scoreImpact = answer.ScoreImpacts[index];
Assert.False(string.IsNullOrEmpty(scoreImpact.Comment),
$"Comment is empty for question {question.Id} answer {answer.Id} impact at index {index}");
}
}
}
}
[Test]
public void AllScoreImpacts_StartWithAVerbAndDoNotEndWithADot()
{
var questionnaireData = UtilsForRecommendationTests.GetProjectQuestionnaire();
foreach (var question in questionnaireData.Questions)
{
foreach (var answer in question.Choices)
{
for (var index = 0; index < answer.ScoreImpacts.Length; index++)
{
var comment = answer.ScoreImpacts[index].Comment;
var firstWord = comment.Split(' ')[0];
CollectionAssert.Contains(k_Verbs, firstWord,
$"Comment '{comment}' does not start with a verb for question {question.Id} answer {answer.Id} impact at index {index}");
Assert.False(comment.EndsWith("."),
$"Comment '{comment}' should not end with a dot for question {question.Id} answer {answer.Id} impact at index {index}");
}
}
}
}
[Test]
public void AllSolutionsData_DoNotHaveAVerbBeforeDynamicText()
{
var data = RecommenderSystemDataObject.instance.RecommenderSystemData;
const string dynamicKeyword = Scoring.DynamicKeyword;
foreach (var solution in data.RecommendedSolutions)
{
Assert.True(solution.ShortDescription.Contains(dynamicKeyword),
$"Solution {solution.Type} description does not contain dynamic text '{dynamicKeyword}'");
var wordBeforeDynamic = solution.ShortDescription.Split(dynamicKeyword)[0].Split(' ').Last();
Assert.False(k_Verbs.Contains(wordBeforeDynamic),
$"Solution {solution.Type} description starts with a verb '{wordBeforeDynamic}' before dynamic text '{dynamicKeyword}'");
}
}
}
}