forked from BilalY/Rasagar
85 lines
2.8 KiB
C#
85 lines
2.8 KiB
C#
using System;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.TestTools;
|
|
using System.Collections;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEngine.UI;
|
|
using System.Reflection;
|
|
|
|
namespace InputfieldTests
|
|
{
|
|
public class BaseInputFieldTests
|
|
{
|
|
protected GameObject m_PrefabRoot;
|
|
|
|
IEnumerator Waiting()
|
|
{
|
|
#if UNITY_EDITOR
|
|
// WaitForEndOfFrame doesn't work in batch mode
|
|
int startFrame = Time.frameCount;
|
|
return new WaitUntil(() => Time.frameCount - startFrame >= 1);
|
|
|
|
#else
|
|
yield return new WaitForEndOfFrame();
|
|
#endif
|
|
}
|
|
|
|
protected IEnumerator WaitForCondition(string name, Func<bool> condition, float timeOutInSeconds, Func<string> additionalErrorMessage = null)
|
|
{
|
|
var start = Time.realtimeSinceStartup;
|
|
|
|
while (condition() == false)
|
|
{
|
|
yield return Waiting();
|
|
|
|
if (Time.realtimeSinceStartup - start > timeOutInSeconds)
|
|
{
|
|
var msg = $"TimeOut ({timeOutInSeconds} seconds) while waiting for '{name}'";
|
|
if (additionalErrorMessage != null)
|
|
msg += Environment.NewLine + additionalErrorMessage.Invoke();
|
|
throw new Exception(msg);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void CreateInputFieldAsset(string prefabPath)
|
|
{
|
|
#if UNITY_EDITOR
|
|
var rootGO = new GameObject("rootGo");
|
|
|
|
var canvasGO = new GameObject("Canvas", typeof(Canvas));
|
|
canvasGO.transform.SetParent(rootGO.transform);
|
|
var canvas = canvasGO.GetComponent<Canvas>();
|
|
canvas.referencePixelsPerUnit = 100;
|
|
|
|
GameObject inputFieldGO = new GameObject("InputField", typeof(RectTransform), typeof(InputField));
|
|
inputFieldGO.transform.SetParent(canvasGO.transform);
|
|
|
|
GameObject textGO = new GameObject("Text", typeof(RectTransform), typeof(Text));
|
|
textGO.transform.SetParent(inputFieldGO.transform);
|
|
|
|
GameObject eventSystemGO = new GameObject("EventSystem", typeof(EventSystem), typeof(FakeInputModule));
|
|
eventSystemGO.transform.SetParent(rootGO.transform);
|
|
|
|
InputField inputField = inputFieldGO.GetComponent<InputField>();
|
|
|
|
inputField.interactable = true;
|
|
inputField.enabled = true;
|
|
inputField.textComponent = textGO.GetComponent<Text>();
|
|
inputField.textComponent.fontSize = 12;
|
|
inputField.textComponent.supportRichText = false;
|
|
|
|
if (!Directory.Exists("Assets/Resources/"))
|
|
Directory.CreateDirectory("Assets/Resources/");
|
|
|
|
PrefabUtility.SaveAsPrefabAsset(rootGO, prefabPath);
|
|
GameObject.DestroyImmediate(rootGO);
|
|
#endif
|
|
}
|
|
}
|
|
}
|