Complete cartoon presentation, Korean voice adoption and responsive art framing
This commit is contained in:
@@ -31,6 +31,7 @@ namespace MagnetismHeroes.Tests
|
||||
[TestCase("count_01","13A882CE1620140D447635E14F2D4758045D5E348960C17386DF1C720050C100")]
|
||||
[TestCase("guide_collect","62E15C9E38C36F4094A6C7E9C5148510141290B5F41DB5AAD9DC1D8F1A158594")]
|
||||
[TestCase("guide_count","DEBE29B89F3E2856F2BF4C5E01707A5F0A0657E5768C03BE385EC88FA2328B40")]
|
||||
[TestCase("count_08","FA8034948F6AC3E289E8E7E9FB447943760D4ED5AC577C8AB0C961C608FE49C2")]
|
||||
public void UserApprovedVoiceBytesRemainExact(string id,string hash)
|
||||
{
|
||||
using (var sha=SHA256.Create()) Assert.That(System.BitConverter.ToString(sha.ComputeHash(File.ReadAllBytes($"Assets/MagnetismHeroes/UnityRuntime/Presentation/Audio/Voice/{id}.wav"))).Replace("-",""), Is.EqualTo(hash));
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using MagnetismHeroes.UnityRuntime.Presentation;
|
||||
using NUnit.Framework;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MagnetismHeroes.Tests
|
||||
{
|
||||
public sealed class PresentationAssetTests
|
||||
{
|
||||
private const string Root = "Assets/MagnetismHeroes/UnityRuntime/Presentation/";
|
||||
[Test] public void FaceAtlasHasSixDistinctOfflineExpressionsAndDecorationsCannotReceiveInput()
|
||||
{
|
||||
var badge = AssetDatabase.LoadAssetAtPath<GameObject>(Root + "Prefabs/GroupBadge.prefab");
|
||||
var data = new SerializedObject(badge.GetComponent<GroupBadge>()); var frames = data.FindProperty("_expressions");
|
||||
Assert.That(frames.arraySize, Is.EqualTo(6));
|
||||
var sprites = Enumerable.Range(0, 6).Select(i => (Sprite)frames.GetArrayElementAtIndex(i).objectReferenceValue).ToArray();
|
||||
Assert.That(sprites.All(sprite => sprite != null && sprite.texture != null), Is.True);
|
||||
Assert.That(sprites.Select(sprite => sprite.rect).Distinct().Count(), Is.EqualTo(6));
|
||||
Assert.That(sprites.Select(sprite => sprite.texture).Distinct().Count(), Is.EqualTo(1));
|
||||
Assert.That(badge.GetComponentsInChildren<Collider>(true), Is.Empty);
|
||||
Assert.That(badge.GetComponentsInChildren<SpriteRenderer>(true).Length, Is.EqualTo(1));
|
||||
Assert.That(badge.GetComponentsInChildren<TMPro.TextMeshPro>(true).Length, Is.EqualTo(1));
|
||||
Assert.That(badge.transform.Find("RibbonCape"), Is.Not.Null);
|
||||
var ball = AssetDatabase.LoadAssetAtPath<GameObject>(Root + "Prefabs/MagnetFriend.prefab");
|
||||
Assert.That(ball.GetComponentsInChildren<Collider>(true).Length, Is.EqualTo(1));
|
||||
Assert.That(ball.GetComponent<SphereCollider>().radius, Is.EqualTo(.5f));
|
||||
Assert.That(ball.transform.localScale, Is.EqualTo(Vector3.one));
|
||||
}
|
||||
[Test] public void AudioRoutesToExistingMixerAndRequiredNoticesAreStagedForBuild()
|
||||
{
|
||||
var app = AssetDatabase.LoadAssetAtPath<GameObject>(Root + "Prefabs/GameApp.prefab");
|
||||
Assert.That(AssetDatabase.AssetPathToGUID(Root + "Prefabs/GameApp.prefab"), Is.EqualTo("73c3215bc432df740b907a1edefa9ea1"));
|
||||
Assert.That(app.GetComponent<GameSound>(), Is.Not.Null);
|
||||
foreach (string group in new[] { "SFX", "Music" })
|
||||
{
|
||||
var source = app.transform.Find(group).GetComponent<AudioSource>();
|
||||
Assert.That(source.outputAudioMixerGroup.name, Is.EqualTo(group));
|
||||
Assert.That(source.playOnAwake, Is.False); Assert.That(source.spatialBlend, Is.Zero);
|
||||
Assert.That(source.clip, Is.Null, "User has deferred supplying music/SFX; no substitute is selected.");
|
||||
}
|
||||
foreach (string path in new[] { "NotoSansCJK-OFL.txt", "Qwen3-TTS-Apache-2.0.txt", "Qwen3-TTS-model-card.txt" })
|
||||
Assert.That(File.ReadAllText("Assets/StreamingAssets/Notices/" + path).Length, Is.GreaterThan(100));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 415c49a50d8d790469cd272156da0448
|
||||
Reference in New Issue
Block a user