An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.9 KiB

// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
using Fungus.Utils;
namespace Fungus
{
/// <summary>
/// Checks if Writer signals are being sent correctly.
/// </summary>
[AddComponentMenu("")]
public class WriterSignalsTester : MonoBehaviour
{
int correctTagCount = 0;
bool receivedInput = false;
int glyphCount = 0;
void OnEnable()
{
WriterSignals.OnTextTagToken += OnTextTagToken;
WriterSignals.OnWriterState += OnWriterState;
WriterSignals.OnWriterInput += OnWriterInput;
WriterSignals.OnWriterGlyph += OnWriterGlyph;
}
void OnDisable()
{
WriterSignals.OnTextTagToken -= OnTextTagToken;
WriterSignals.OnWriterState -= OnWriterState;
WriterSignals.OnWriterInput -= OnWriterInput;
WriterSignals.OnWriterGlyph -= OnWriterGlyph;
}
void OnTextTagToken(Writer writer, TextTagToken token, int index, int maxIndex)
{
if (index == 0 && token.type == TokenType.BoldStart)
{
correctTagCount++;
}
else if (index == 1 && token.type == TokenType.Wait)
{
correctTagCount++;
}
else if (index == 2 && token.type == TokenType.Words)
{
correctTagCount++;
}
else if (index == 3 && token.type == TokenType.BoldEnd)
{
correctTagCount++;
}
}
void OnWriterState(Writer writer, WriterState writerState)
{
if (writerState == WriterState.Start && correctTagCount != 0)
{
IntegrationTest.Fail();
}
if (writerState == WriterState.Pause && correctTagCount != 2)
{
IntegrationTest.Fail();
}
if (writerState == WriterState.Resume && correctTagCount != 2)
{
IntegrationTest.Fail();
}
else if (writerState == WriterState.End && correctTagCount != 4)
{
IntegrationTest.Fail();
}
if (writerState == WriterState.End)
{
if (!receivedInput)
{
IntegrationTest.Fail();
}
if (glyphCount != 6)
{
IntegrationTest.Fail();
}
IntegrationTest.Pass();
}
}
void OnWriterInput(Writer writer)
{
receivedInput = true;
}
void OnWriterGlyph(Writer writer)
{
glyphCount++;
}
}
}