|
|
|
// 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;
|
|
|
|
|
|
|
|
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++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|