139 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			139 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|   | using System.Collections.Generic; | ||
|  | using System.IO; | ||
|  | using NUnit.Framework; | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | using UnityEngine.TestTools; | ||
|  | using UnityEngine.UI; | ||
|  | using UnityEngine.UI.Tests; | ||
|  | 
 | ||
|  | namespace LayoutTests | ||
|  | { | ||
|  |     class ContentSizeFitterTests : IPrebuildSetup | ||
|  |     { | ||
|  |         const string kPrefabPath = "Assets/Resources/ContentSizeFitterTests.prefab"; | ||
|  | 
 | ||
|  |         private GameObject m_PrefabRoot; | ||
|  |         private ContentSizeFitter m_ContentSizeFitter; | ||
|  |         private RectTransform m_RectTransform; | ||
|  | 
 | ||
|  |         public void Setup() | ||
|  |         { | ||
|  | #if UNITY_EDITOR | ||
|  |             var rootGO = new GameObject("rootGo"); | ||
|  |             GameObject canvasGO = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas)); | ||
|  |             canvasGO.transform.SetParent(rootGO.transform); | ||
|  | 
 | ||
|  |             var canvas = canvasGO.GetComponent<Canvas>(); | ||
|  |             canvas.referencePixelsPerUnit = 100; | ||
|  | 
 | ||
|  |             var testGO = new GameObject("TestObject", typeof(RectTransform), typeof(ContentSizeFitter)); | ||
|  |             testGO.transform.SetParent(canvasGO.transform); | ||
|  | 
 | ||
|  |             if (!Directory.Exists("Assets/Resources/")) | ||
|  |                 Directory.CreateDirectory("Assets/Resources/"); | ||
|  | 
 | ||
|  |             PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabPath); | ||
|  |             GameObject.DestroyImmediate(rootGO); | ||
|  | #endif | ||
|  |         } | ||
|  | 
 | ||
|  |         [SetUp] | ||
|  |         public void TestSetup() | ||
|  |         { | ||
|  |             m_PrefabRoot = Object.Instantiate(Resources.Load("ContentSizeFitterTests")) as GameObject; | ||
|  |             m_ContentSizeFitter = m_PrefabRoot.GetComponentInChildren<ContentSizeFitter>(); | ||
|  | 
 | ||
|  |             m_ContentSizeFitter.enabled = true; | ||
|  | 
 | ||
|  |             m_RectTransform = m_ContentSizeFitter.GetComponent<RectTransform>(); | ||
|  |             m_RectTransform.sizeDelta = new Vector2(50, 50); | ||
|  | 
 | ||
|  |             GameObject testObject = m_ContentSizeFitter.gameObject; | ||
|  |             // set up components | ||
|  |             var componentA = testObject.AddComponent<LayoutElement>(); | ||
|  |             componentA.minWidth = 5; | ||
|  |             componentA.minHeight = 10; | ||
|  |             componentA.preferredWidth = 100; | ||
|  |             componentA.preferredHeight = 105; | ||
|  |             componentA.flexibleWidth = 0; | ||
|  |             componentA.flexibleHeight = 0; | ||
|  |             componentA.enabled = true; | ||
|  | 
 | ||
|  |             var componentB = testObject.AddComponent<LayoutElement>(); | ||
|  |             componentB.minWidth = 15; | ||
|  |             componentB.minHeight = 20; | ||
|  |             componentB.preferredWidth = 110; | ||
|  |             componentB.preferredHeight = 115; | ||
|  |             componentB.flexibleWidth = 0; | ||
|  |             componentB.flexibleHeight = 0; | ||
|  |             componentB.enabled = true; | ||
|  | 
 | ||
|  |             var componentC = testObject.AddComponent<LayoutElement>(); | ||
|  |             componentC.minWidth = 25; | ||
|  |             componentC.minHeight = 30; | ||
|  |             componentC.preferredWidth = 120; | ||
|  |             componentC.preferredHeight = 125; | ||
|  |             componentC.flexibleWidth = 0; | ||
|  |             componentC.flexibleHeight = 0; | ||
|  |             componentC.enabled = true; | ||
|  |         } | ||
|  | 
 | ||
|  |         [TearDown] | ||
|  |         public void TearDown() | ||
|  |         { | ||
|  |             GameObject.DestroyImmediate(m_PrefabRoot); | ||
|  |             m_PrefabRoot = null; | ||
|  |             m_ContentSizeFitter = null; | ||
|  |             m_RectTransform = null; | ||
|  |         } | ||
|  | 
 | ||
|  |         [OneTimeTearDown] | ||
|  |         public void OneTimeTearDown() | ||
|  |         { | ||
|  | #if UNITY_EDITOR | ||
|  |             AssetDatabase.DeleteAsset(kPrefabPath); | ||
|  | #endif | ||
|  |         } | ||
|  | 
 | ||
|  |         [Test] | ||
|  |         public void TestFitModeUnconstrained() | ||
|  |         { | ||
|  |             m_ContentSizeFitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained; | ||
|  |             m_ContentSizeFitter.verticalFit = ContentSizeFitter.FitMode.Unconstrained; | ||
|  | 
 | ||
|  |             m_ContentSizeFitter.SetLayoutHorizontal(); | ||
|  |             m_ContentSizeFitter.SetLayoutVertical(); | ||
|  | 
 | ||
|  |             Assert.AreEqual(50, m_RectTransform.rect.width); | ||
|  |             Assert.AreEqual(50, m_RectTransform.rect.height); | ||
|  |         } | ||
|  | 
 | ||
|  |         [Test] | ||
|  |         public void TestFitModeMinSize() | ||
|  |         { | ||
|  |             m_ContentSizeFitter.horizontalFit = ContentSizeFitter.FitMode.MinSize; | ||
|  |             m_ContentSizeFitter.verticalFit = ContentSizeFitter.FitMode.MinSize; | ||
|  | 
 | ||
|  |             m_ContentSizeFitter.SetLayoutHorizontal(); | ||
|  |             m_ContentSizeFitter.SetLayoutVertical(); | ||
|  | 
 | ||
|  |             Assert.AreEqual(25, m_RectTransform.rect.width); | ||
|  |             Assert.AreEqual(30, m_RectTransform.rect.height); | ||
|  |         } | ||
|  | 
 | ||
|  |         [Test] | ||
|  |         public void TestFitModePreferredSize() | ||
|  |         { | ||
|  |             m_ContentSizeFitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize; | ||
|  |             m_ContentSizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize; | ||
|  | 
 | ||
|  |             m_ContentSizeFitter.SetLayoutHorizontal(); | ||
|  |             m_ContentSizeFitter.SetLayoutVertical(); | ||
|  | 
 | ||
|  |             Assert.AreEqual(120, m_RectTransform.rect.width); | ||
|  |             Assert.AreEqual(125, m_RectTransform.rect.height); | ||
|  |         } | ||
|  |     } | ||
|  | } |