Files
.vs
Assets
Library
APIUpdater
Artifacts
Bee
BuildPlayerData
PackageCache
com.unity.collab-proxy@2.5.2
com.unity.editorcoroutines@1.0.0
com.unity.ext.nunit@1.0.6
com.unity.feature.development@1.0.1
com.unity.ide.rider@3.0.31
com.unity.ide.visualstudio@2.0.22
com.unity.ide.vscode@1.2.5
com.unity.modules.ai@1.0.0
com.unity.modules.androidjni@1.0.0
com.unity.modules.animation@1.0.0
com.unity.modules.assetbundle@1.0.0
com.unity.modules.audio@1.0.0
com.unity.modules.cloth@1.0.0
com.unity.modules.director@1.0.0
com.unity.modules.imageconversion@1.0.0
com.unity.modules.imgui@1.0.0
com.unity.modules.jsonserialize@1.0.0
com.unity.modules.particlesystem@1.0.0
com.unity.modules.physics2d@1.0.0
com.unity.modules.physics@1.0.0
com.unity.modules.screencapture@1.0.0
com.unity.modules.subsystems@1.0.0
com.unity.modules.terrain@1.0.0
com.unity.modules.terrainphysics@1.0.0
com.unity.modules.tilemap@1.0.0
com.unity.modules.ui@1.0.0
com.unity.modules.uielements@1.0.0
com.unity.modules.umbra@1.0.0
com.unity.modules.unityanalytics@1.0.0
com.unity.modules.unitywebrequest@1.0.0
com.unity.modules.unitywebrequestassetbundle@1.0.0
com.unity.modules.unitywebrequestaudio@1.0.0
com.unity.modules.unitywebrequesttexture@1.0.0
com.unity.modules.unitywebrequestwww@1.0.0
com.unity.modules.vehicles@1.0.0
com.unity.modules.video@1.0.0
com.unity.modules.vr@1.0.0
com.unity.modules.wind@1.0.0
com.unity.modules.xr@1.0.0
com.unity.performance.profile-analyzer@1.2.2
com.unity.settings-manager@2.0.1
com.unity.test-framework@1.1.33
com.unity.testtools.codecoverage@1.2.6
com.unity.textmeshpro@3.0.6
com.unity.timeline@1.7.6
com.unity.ugui@1.0.0
Documentation~
Editor
Runtime
Tests
Editor
Runtime
Button
Canvas
Dropdown
EventSystem
Graphic
Image
InputField
Layout
AspectRatioFitterTests.cs
AspectRatioFitterTests.cs.meta
ContentSizeFitterTests.cs
ContentSizeFitterTests.cs.meta
GridLayoutGroupTests.cs
GridLayoutGroupTests.cs.meta
HorizonalLayoutGroupTests.cs
HorizonalLayoutGroupTests.cs.meta
LayoutGroupScaling.cs
LayoutGroupScaling.cs.meta
VerticalLayoutGroupTests.cs
VerticalLayoutGroupTests.cs.meta
LayoutGroup
MaskClipping
NestedLayout
ScrollBar
ScrollRect
Slider
TextEditor
Toggle
Util
Button.meta
Canvas.meta
Dropdown.meta
EventSystem.meta
Graphic.meta
Image.meta
InputField.meta
Layout.meta
LayoutGroup.meta
MaskClipping.meta
NestedLayout.meta
ScrollBar.meta
ScrollRect.meta
Slider.meta
TextEditor.meta
Toggle.meta
UnityEngine.UI.Tests.asmdef
UnityEngine.UI.Tests.asmdef.meta
Util.meta
Editor.meta
Runtime.meta
CHANGELOG.md
CHANGELOG.md.meta
Editor.meta
LICENSE.md
LICENSE.md.meta
README.md
README.md.meta
Runtime.meta
Tests.meta
package.json
package.json.meta
com.unity.visualscripting@1.9.4
PackageManager
PlayModeViewStates
PlayerDataCache
ScriptAssemblies
Search
ShaderCache
SplashScreenCache
StateCache
UIElements
AnnotationManager
ArtifactDB
ArtifactDB-lock
BuildPlayer.prefs
BuildSettings.asset
EditorOnlyScriptingSettings.json
EditorOnlyVirtualTextureState.json
EditorSnapSettings.asset
EditorUserBuildSettings.asset
InspectorExpandedItems.asset
LastBuild.buildreport
LastSceneManagerSetup.txt
LibraryFormatVersion.txt
MonoManager.asset
SceneVisibilityState.asset
ScriptMapper
ShaderCache.db
SourceAssetDB
SourceAssetDB-lock
SpriteAtlasDatabase.asset
Style.catalog
expandedItems
ilpp.pid
Logs
Packages
ProjectSettings
UserSettings
obj
.vsconfig
Assembly-CSharp.Player.csproj
Assembly-CSharp.csproj
TM1.sln
Unity.CollabProxy.Editor.csproj
Unity.EditorCoroutines.Editor.csproj
Unity.Performance.Profile-Analyzer.Editor.csproj
Unity.PlasticSCM.Editor.csproj
Unity.Rider.Editor.csproj
Unity.Settings.Editor.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Model.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection.csproj
Unity.TestTools.CodeCoverage.Editor.csproj
Unity.TextMeshPro.Editor.csproj
Unity.TextMeshPro.Player.csproj
Unity.TextMeshPro.csproj
Unity.Timeline.Editor.csproj
Unity.Timeline.Player.csproj
Unity.Timeline.csproj
Unity.VSCode.Editor.csproj
Unity.VisualScripting.Core.Editor.csproj
Unity.VisualScripting.Core.Player.csproj
Unity.VisualScripting.Core.csproj
Unity.VisualScripting.Flow.Editor.csproj
Unity.VisualScripting.Flow.Player.csproj
Unity.VisualScripting.Flow.csproj
Unity.VisualScripting.SettingsProvider.Editor.csproj
Unity.VisualScripting.Shared.Editor.csproj
Unity.VisualScripting.State.Editor.csproj
Unity.VisualScripting.State.Player.csproj
Unity.VisualScripting.State.csproj
Unity.VisualStudio.Editor.csproj
UnityEditor.TestRunner.csproj
UnityEditor.UI.csproj
UnityEngine.TestRunner.Player.csproj
UnityEngine.TestRunner.csproj
UnityEngine.UI.Player.csproj
UnityEngine.UI.csproj
SimonSayeBabu bd1057cec0 first commit
2025-01-17 13:10:20 +01:00

178 lines
6.8 KiB
C#

using System.IO;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine.EventSystems;
using UnityEngine.TestTools;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UI.Tests;
namespace LayoutTests
{
public class VerticalLayoutGroupTests : IPrebuildSetup
{
GameObject m_PrefabRoot;
const string kPrefabPath = "Assets/Resources/VerticalLayoutGroupPrefab.prefab";
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 groupGO = new GameObject("Group", typeof(RectTransform), typeof(VerticalLayoutGroup));
groupGO.transform.SetParent(canvasGO.transform);
var element1GO = new GameObject("Element1", typeof(RectTransform), typeof(LayoutElement));
element1GO.transform.SetParent(groupGO.transform);
var element2GO = new GameObject("Element2", typeof(RectTransform), typeof(LayoutElement));
element2GO.transform.SetParent(groupGO.transform);
var element3GO = new GameObject("Element3", typeof(RectTransform), typeof(LayoutElement));
element3GO.transform.SetParent(groupGO.transform);
VerticalLayoutGroup layoutGroup = groupGO.GetComponent<VerticalLayoutGroup>();
layoutGroup.padding = new RectOffset(2, 4, 3, 5);
layoutGroup.spacing = 1;
layoutGroup.childForceExpandWidth = false;
layoutGroup.childForceExpandHeight = false;
layoutGroup.childControlWidth = true;
layoutGroup.childControlHeight = true;
var element1 = element1GO.GetComponent<LayoutElement>();
element1.minWidth = 5;
element1.minHeight = 10;
element1.preferredWidth = 100;
element1.preferredHeight = 50;
element1.flexibleWidth = 0;
element1.flexibleHeight = 0;
element1.enabled = true;
var element2 = element2GO.GetComponent<LayoutElement>();
element2.minWidth = 10;
element2.minHeight = 5;
element2.preferredWidth = -1;
element2.preferredHeight = -1;
element2.flexibleWidth = 0;
element2.flexibleHeight = 0;
element2.enabled = true;
var element3 = element3GO.GetComponent<LayoutElement>();
element3.minWidth = 25;
element3.minHeight = 15;
element3.preferredWidth = 200;
element3.preferredHeight = 80;
element3.flexibleWidth = 1;
element3.flexibleHeight = 1;
element3.enabled = true;
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("VerticalLayoutGroupPrefab")) as GameObject;
}
[TearDown]
public void TearDown()
{
Object.DestroyImmediate(m_PrefabRoot);
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
#if UNITY_EDITOR
AssetDatabase.DeleteAsset(kPrefabPath);
#endif
}
[Test]
public void TestCalculateLayoutInputHorizontal()
{
var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>();
layoutGroup.CalculateLayoutInputHorizontal();
layoutGroup.SetLayoutHorizontal();
layoutGroup.CalculateLayoutInputVertical();
layoutGroup.SetLayoutVertical();
Assert.AreEqual(31, layoutGroup.minWidth);
Assert.AreEqual(206, layoutGroup.preferredWidth);
Assert.AreEqual(1, layoutGroup.flexibleWidth);
}
[Test]
public void TestCalculateLayoutInputVertical()
{
var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>();
layoutGroup.CalculateLayoutInputHorizontal();
layoutGroup.SetLayoutHorizontal();
layoutGroup.CalculateLayoutInputVertical();
layoutGroup.SetLayoutVertical();
Assert.AreEqual(40, layoutGroup.minHeight);
Assert.AreEqual(145, layoutGroup.preferredHeight);
Assert.AreEqual(1, layoutGroup.flexibleHeight);
}
[Test]
public void TestCalculateLayoutVertical()
{
var parentGO = m_PrefabRoot.transform.GetChild(0).GetChild(0);
var element1GO = parentGO.GetChild(0);
var element1Trans = element1GO.GetComponent<RectTransform>();
var element2GO = parentGO.GetChild(1);
var element2Trans = element2GO.GetComponent<RectTransform>();
var element3GO = parentGO.GetChild(2);
var element3Trans = element3GO.GetComponent<RectTransform>();
var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>();
layoutGroup.CalculateLayoutInputHorizontal();
layoutGroup.SetLayoutHorizontal();
layoutGroup.CalculateLayoutInputVertical();
layoutGroup.SetLayoutVertical();
Assert.AreEqual(-19.4f, element1Trans.anchoredPosition.y, 0.1f);
Assert.AreEqual(-39.4f, element2Trans.anchoredPosition.y, 0.1f);
Assert.AreEqual(-68.9f, element3Trans.anchoredPosition.y, 0.1f);
}
[Test]
public void TestCalculateLayoutVerticalReversed()
{
var parentGO = m_PrefabRoot.transform.GetChild(0).GetChild(0);
var element1GO = parentGO.GetChild(0);
var element1Trans = element1GO.GetComponent<RectTransform>();
var element2GO = parentGO.GetChild(1);
var element2Trans = element2GO.GetComponent<RectTransform>();
var element3GO = parentGO.GetChild(2);
var element3Trans = element3GO.GetComponent<RectTransform>();
var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>();
layoutGroup.reverseArrangement = true;
layoutGroup.CalculateLayoutInputHorizontal();
layoutGroup.SetLayoutHorizontal();
layoutGroup.CalculateLayoutInputVertical();
layoutGroup.SetLayoutVertical();
//Assert.AreEqual(-78.6f, element1Trans.anchoredPosition.y, 0.1f);
Assert.AreEqual(-58.6f, element2Trans.anchoredPosition.y, 0.1f);
Assert.AreEqual(-29.1f, element3Trans.anchoredPosition.y, 0.1f);
}
}
}