Skip to content

Commit

Permalink
Cleanup state in TextTyper printing (issue #2)
Browse files Browse the repository at this point in the history
This adds a TypedTextGenerator that provides a pure function to return
the print string at a desired place in a line of dialogue. This
resolves some of the issues I had with mishandled state, namely
issue #7 and issue #5.
  • Loading branch information
edwardrowe committed Mar 9, 2017
1 parent 117d0b0 commit 3cba8b0
Show file tree
Hide file tree
Showing 11 changed files with 1,284 additions and 285 deletions.
2 changes: 2 additions & 0 deletions Assets/RedBlueGames/TextTyper/RichTextTag.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
/// </summary>
public class RichTextTag
{
public static readonly RichTextTag ClearColorTag = new RichTextTag("<color=#00000000>");

private const char OpeningNodeDelimeter = '<';
private const char CloseNodeDelimeter = '>';
private const char EndTagDelimeter = '/';
Expand Down
110 changes: 56 additions & 54 deletions Assets/RedBlueGames/TextTyper/Tests/Editor/RichTextTagTests.cs
Original file line number Diff line number Diff line change
@@ -1,58 +1,60 @@
using UnityEngine;
using UnityEditor;
using NUnit.Framework;
using RedBlueGames.Tools.TextTyper;

public class RichTextTagTests
namespace RedBlueGames.Tools.TextTyper.Tests
{
[Test]
public void Constructor_OpeningTag_Parses()
{
//Arrange
var tag = "<b>";

//Act
var richTextTag = new RichTextTag(tag);

//Assert
Assert.AreEqual(tag, richTextTag.TagText);
Assert.AreEqual("b", richTextTag.TagType);
Assert.IsFalse(richTextTag.IsClosingTag);
Assert.AreEqual("</b>", richTextTag.ClosingTagText);
Assert.AreEqual(string.Empty, richTextTag.Parameter);
}

[Test]
public void Constructor_TagAndParameter_Parses()
{
//Arrange
var tag = "<color=#FFFFFFFF>";

//Act
var richTextTag = new RichTextTag(tag);

//Assert
Assert.AreEqual(tag, richTextTag.TagText);
Assert.AreEqual("color", richTextTag.TagType);
Assert.IsFalse(richTextTag.IsClosingTag);
Assert.AreEqual("</color>", richTextTag.ClosingTagText);
Assert.AreEqual("#FFFFFFFF", richTextTag.Parameter);
}
using UnityEngine;
using UnityEditor;
using NUnit.Framework;

[Test]
public void Constructor_ClosingTag_Parses()
public class RichTextTagTests
{
//Arrange
var tag = "</color>";

//Act
var richTextTag = new RichTextTag(tag);

//Assert
Assert.AreEqual(tag, richTextTag.TagText);
Assert.AreEqual("color", richTextTag.TagType);
Assert.IsTrue(richTextTag.IsClosingTag);
Assert.AreEqual("</color>", richTextTag.ClosingTagText);
Assert.AreEqual(string.Empty, richTextTag.Parameter);
[Test]
public void Constructor_OpeningTag_Parses()
{
//Arrange
var tag = "<b>";

//Act
var richTextTag = new RichTextTag(tag);

//Assert
Assert.AreEqual(tag, richTextTag.TagText);
Assert.AreEqual("b", richTextTag.TagType);
Assert.IsFalse(richTextTag.IsClosingTag);
Assert.AreEqual("</b>", richTextTag.ClosingTagText);
Assert.AreEqual(string.Empty, richTextTag.Parameter);
}

[Test]
public void Constructor_TagAndParameter_Parses()
{
//Arrange
var tag = "<color=#FFFFFFFF>";

//Act
var richTextTag = new RichTextTag(tag);

//Assert
Assert.AreEqual(tag, richTextTag.TagText);
Assert.AreEqual("color", richTextTag.TagType);
Assert.IsFalse(richTextTag.IsClosingTag);
Assert.AreEqual("</color>", richTextTag.ClosingTagText);
Assert.AreEqual("#FFFFFFFF", richTextTag.Parameter);
}

[Test]
public void Constructor_ClosingTag_Parses()
{
//Arrange
var tag = "</color>";

//Act
var richTextTag = new RichTextTag(tag);

//Assert
Assert.AreEqual(tag, richTextTag.TagText);
Assert.AreEqual("color", richTextTag.TagType);
Assert.IsTrue(richTextTag.IsClosingTag);
Assert.AreEqual("</color>", richTextTag.ClosingTagText);
Assert.AreEqual(string.Empty, richTextTag.Parameter);
}
}
}
}
Loading

0 comments on commit 3cba8b0

Please sign in to comment.