149 lines
4.4 KiB
C#

using UnityEngine;
using System.Collections;
namespace LeanTweenFramework
{
public class LeanTester : MonoBehaviour
{
public float timeout = 15f;
#if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5
public void Start()
{
StartCoroutine(timeoutCheck());
}
IEnumerator timeoutCheck()
{
float pauseEndTime = Time.realtimeSinceStartup + timeout;
while (Time.realtimeSinceStartup < pauseEndTime)
{
yield return 0;
}
if (LeanTest.testsFinished == false)
{
Debug.Log(LeanTest.formatB("Tests timed out!"));
LeanTest.overview();
}
}
#endif
}
public class LeanTest : object
{
public static int expected = 0;
private static int tests = 0;
private static int passes = 0;
public static float timeout = 15f;
public static bool timeoutStarted = false;
public static bool testsFinished = false;
public static void debug(string name, bool didPass, string failExplaination = null)
{
expect(didPass, name, failExplaination);
}
public static void expect(bool didPass, string definition, string failExplaination = null)
{
float len = printOutLength(definition);
int paddingLen = 40 - (int)(len * 1.05f);
#if UNITY_FLASH
string padding = padRight(paddingLen);
#else
string padding = "".PadRight(paddingLen, "_"[0]);
#endif
string logName = formatB(definition) + " " + padding + " [ " + (didPass ? formatC("pass", "green") : formatC("fail", "red")) + " ]";
if (didPass == false && failExplaination != null)
logName += " - " + failExplaination;
Debug.Log(logName);
if (didPass)
passes++;
tests++;
// Debug.Log("tests:"+tests+" expected:"+expected);
if (tests == expected && testsFinished == false)
{
overview();
}
else if (tests > expected)
{
Debug.Log(formatB("Too many tests for a final report!") + " set LeanTest.expected = " + tests);
}
if (timeoutStarted == false)
{
timeoutStarted = true;
GameObject tester = new GameObject();
tester.name = "~LeanTest";
LeanTester test = tester.AddComponent(typeof(LeanTester)) as LeanTester;
test.timeout = timeout;
#if !UNITY_EDITOR
tester.hideFlags = HideFlags.HideAndDontSave;
#endif
}
}
public static string padRight(int len)
{
string str = "";
for (int i = 0; i < len; i++)
{
str += "_";
}
return str;
}
public static float printOutLength(string str)
{
float len = 0.0f;
for (int i = 0; i < str.Length; i++)
{
if (str[i] == "I"[0])
{
len += 0.5f;
}
else if (str[i] == "J"[0])
{
len += 0.85f;
}
else
{
len += 1.0f;
}
}
return len;
}
public static string formatBC(string str, string color)
{
return formatC(formatB(str), color);
}
public static string formatB(string str)
{
#if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2
return str;
#else
return "<b>" + str + "</b>";
#endif
}
public static string formatC(string str, string color)
{
#if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2
return str;
#else
return "<color=" + color + ">" + str + "</color>";
#endif
}
public static void overview()
{
testsFinished = true;
int failedCnt = (expected - passes);
string failedStr = failedCnt > 0 ? formatBC("" + failedCnt, "red") : "" + failedCnt;
Debug.Log(formatB("Final Report:") + " _____________________ PASSED: " + formatBC("" + passes, "green") + " FAILED: " + failedStr + " ");
}
}
}