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.
123 lines
3.2 KiB
123 lines
3.2 KiB
using UnityEngine; |
|
using System.Collections; |
|
|
|
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+" "); |
|
} |
|
} |
|
|