Skip to content

Commit 7684620

Browse files
committed
Add basic rect align tests; minor fixes
1 parent 5125f93 commit 7684620

4 files changed

Lines changed: 308 additions & 2 deletions

File tree

Assets/Editor Toolbox/Runtime/Extensions/RectExtensions.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static Rect AlignCenterX(this Rect rect, float newWidth)
3838

3939
public static Rect AlignCenterY(this Rect rect, float newHeight)
4040
{
41-
var offset = (rect.width - newHeight) / 2;
41+
var offset = (rect.height - newHeight) / 2;
4242
rect.yMin += offset;
4343
rect.yMax -= offset;
4444
return rect;
@@ -69,5 +69,19 @@ public static Rect AddMin(this Rect rect, Vector2 range)
6969
rect.yMin += range.y;
7070
return rect;
7171
}
72+
73+
public static Rect SubMax(this Rect rect, Vector2 range)
74+
{
75+
rect.xMax -= range.x;
76+
rect.yMin -= range.y;
77+
return rect;
78+
}
79+
80+
public static Rect SubMin(this Rect rect, Vector2 range)
81+
{
82+
rect.xMin -= range.x;
83+
rect.yMin -= range.y;
84+
return rect;
85+
}
7286
}
7387
}

Assets/Editor Toolbox/Tests/Editor/Toolbox.Editor.Tests.asmdef

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
{
22
"name": "Toolbox.Editor.Tests",
3+
"rootNamespace": "",
34
"references": [
45
"GUID:27619889b8ba8c24980f49ee34dbb44a",
56
"GUID:0acc523941302664db1f4e527237feb3",
67
"GUID:696a0953692949b40bec8730e64e1fdd",
78
"GUID:1b845e2499b39be4aab3e6ac2c8aa02a"
89
],
9-
"includePlatforms": [],
10+
"includePlatforms": [
11+
"Editor"
12+
],
1013
"excludePlatforms": [],
1114
"allowUnsafeCode": false,
1215
"overrideReferences": true,
Lines changed: 278 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,278 @@
1+
using NUnit.Framework;
2+
using UnityEngine;
3+
4+
namespace Toolbox.Tests
5+
{
6+
public class RectExtensionsAlignTest
7+
{
8+
public class AlignTestData
9+
{
10+
public float alignValue;
11+
public Rect sourceRect;
12+
public Rect actualRect;
13+
14+
public override string ToString()
15+
{
16+
return sourceRect.ToString();
17+
}
18+
}
19+
20+
private static readonly AlignTestData[] alignRightData = new AlignTestData[]
21+
{
22+
new AlignTestData()
23+
{
24+
alignValue = 20,
25+
sourceRect = new Rect(0, 0, 100, 500),
26+
actualRect = new Rect(80, 0, 20, 500)
27+
},
28+
new AlignTestData()
29+
{
30+
alignValue = 0,
31+
sourceRect = new Rect(0, 0, 100, 500),
32+
actualRect = new Rect(100, 0, 0, 500)
33+
},
34+
new AlignTestData()
35+
{
36+
alignValue = 50,
37+
sourceRect = new Rect(15, 100, 100, 500),
38+
actualRect = new Rect(65, 100, 50, 500)
39+
},
40+
new AlignTestData()
41+
{
42+
alignValue = 100,
43+
sourceRect = new Rect(15, 100, 100, 50),
44+
actualRect = new Rect(15, 100, 100, 50)
45+
},
46+
new AlignTestData()
47+
{
48+
alignValue = -50,
49+
sourceRect = new Rect(0, 0, 100, 500),
50+
actualRect = new Rect(150, 0, -50, 500)
51+
}
52+
};
53+
54+
private static readonly AlignTestData[] alignLeftData = new AlignTestData[]
55+
{
56+
new AlignTestData()
57+
{
58+
alignValue = 20,
59+
sourceRect = new Rect(0, 0, 100, 500),
60+
actualRect = new Rect(0, 0, 20, 500)
61+
},
62+
new AlignTestData()
63+
{
64+
alignValue = 0,
65+
sourceRect = new Rect(0, 0, 100, 500),
66+
actualRect = new Rect(0, 0, 0, 500)
67+
},
68+
new AlignTestData()
69+
{
70+
alignValue = 50,
71+
sourceRect = new Rect(15, 100, 100, 500),
72+
actualRect = new Rect(15, 100, 50, 500)
73+
},
74+
new AlignTestData()
75+
{
76+
alignValue = 100,
77+
sourceRect = new Rect(15, 100, 100, 50),
78+
actualRect = new Rect(15, 100, 100, 50)
79+
},
80+
new AlignTestData()
81+
{
82+
alignValue = -50,
83+
sourceRect = new Rect(0, 0, 100, 500),
84+
actualRect = new Rect(0, 0, -50, 500)
85+
}
86+
};
87+
88+
private static readonly AlignTestData[] alignBottomData = new AlignTestData[]
89+
{
90+
new AlignTestData()
91+
{
92+
alignValue = 20,
93+
sourceRect = new Rect(0, 0, 100, 500),
94+
actualRect = new Rect(0, 480, 100, 20)
95+
},
96+
new AlignTestData()
97+
{
98+
alignValue = 0,
99+
sourceRect = new Rect(0, 0, 100, 500),
100+
actualRect = new Rect(0, 500, 100, 0)
101+
},
102+
new AlignTestData()
103+
{
104+
alignValue = 50,
105+
sourceRect = new Rect(15, 100, 100, 500),
106+
actualRect = new Rect(15, 550, 100, 50)
107+
},
108+
new AlignTestData()
109+
{
110+
alignValue = 50,
111+
sourceRect = new Rect(15, 100, 100, 50),
112+
actualRect = new Rect(15, 100, 100, 50)
113+
},
114+
new AlignTestData()
115+
{
116+
alignValue = -50,
117+
sourceRect = new Rect(0, 0, 100, 500),
118+
actualRect = new Rect(0, 550, 100, -50)
119+
}
120+
};
121+
122+
private static readonly AlignTestData[] alignTopData = new AlignTestData[]
123+
{
124+
new AlignTestData()
125+
{
126+
alignValue = 20,
127+
sourceRect = new Rect(0, 0, 100, 500),
128+
actualRect = new Rect(0, 0, 100, 20)
129+
},
130+
new AlignTestData()
131+
{
132+
alignValue = 0,
133+
sourceRect = new Rect(0, 0, 100, 500),
134+
actualRect = new Rect(0, 0, 100, 0)
135+
},
136+
new AlignTestData()
137+
{
138+
alignValue = 50,
139+
sourceRect = new Rect(15, 100, 100, 500),
140+
actualRect = new Rect(15, 100, 100, 50)
141+
},
142+
new AlignTestData()
143+
{
144+
alignValue = 50,
145+
sourceRect = new Rect(15, 100, 100, 50),
146+
actualRect = new Rect(15, 100, 100, 50)
147+
},
148+
new AlignTestData()
149+
{
150+
alignValue = -50,
151+
sourceRect = new Rect(0, 0, 100, 500),
152+
actualRect = new Rect(0, 0, 100, -50)
153+
}
154+
};
155+
156+
private static readonly AlignTestData[] alignCenterXData = new AlignTestData[]
157+
{
158+
new AlignTestData()
159+
{
160+
alignValue = 20,
161+
sourceRect = new Rect(0, 0, 100, 500),
162+
actualRect = new Rect(40, 0, 20, 500)
163+
},
164+
new AlignTestData()
165+
{
166+
alignValue = 0,
167+
sourceRect = new Rect(0, 0, 100, 500),
168+
actualRect = new Rect(50, 0, 0, 500)
169+
},
170+
new AlignTestData()
171+
{
172+
alignValue = 50,
173+
sourceRect = new Rect(15, 100, 100, 500),
174+
actualRect = new Rect(40, 100, 50, 500)
175+
},
176+
new AlignTestData()
177+
{
178+
alignValue = 50,
179+
sourceRect = new Rect(15, 100, 100, 50),
180+
actualRect = new Rect(40, 100, 50, 50)
181+
},
182+
new AlignTestData()
183+
{
184+
alignValue = -50,
185+
sourceRect = new Rect(0, 0, 100, 500),
186+
actualRect = new Rect(75, 0, -50, 500)
187+
}
188+
};
189+
190+
private static readonly AlignTestData[] alignCenterYData = new AlignTestData[]
191+
{
192+
new AlignTestData()
193+
{
194+
alignValue = 20,
195+
sourceRect = new Rect(0, 0, 100, 500),
196+
actualRect = new Rect(0, 240, 100, 20)
197+
},
198+
new AlignTestData()
199+
{
200+
alignValue = 0,
201+
sourceRect = new Rect(0, 0, 100, 500),
202+
actualRect = new Rect(0, 250, 100, 0)
203+
},
204+
new AlignTestData()
205+
{
206+
alignValue = 50,
207+
sourceRect = new Rect(15, 100, 100, 500),
208+
actualRect = new Rect(15, 325, 100, 50)
209+
},
210+
new AlignTestData()
211+
{
212+
alignValue = 50,
213+
sourceRect = new Rect(15, 100, 100, 50),
214+
actualRect = new Rect(15, 100, 100, 50)
215+
},
216+
new AlignTestData()
217+
{
218+
alignValue = -50,
219+
sourceRect = new Rect(0, 0, 100, 500),
220+
actualRect = new Rect(0, 275, 100, -50)
221+
}
222+
};
223+
224+
[Test]
225+
public void TestAlignRightPass([ValueSource(nameof(alignRightData))] AlignTestData data)
226+
{
227+
var alignValue = data.alignValue;
228+
var sourceRect = data.sourceRect;
229+
var actualRect = sourceRect.AlignRight(alignValue);
230+
Assert.AreEqual(data.actualRect, actualRect);
231+
}
232+
233+
[Test]
234+
public void TestAlignLeftPass([ValueSource(nameof(alignLeftData))] AlignTestData data)
235+
{
236+
var alignValue = data.alignValue;
237+
var sourceRect = data.sourceRect;
238+
var actualRect = sourceRect.AlignLeft(alignValue);
239+
Assert.AreEqual(data.actualRect, actualRect);
240+
}
241+
242+
[Test]
243+
public void TestAlignBottomPass([ValueSource(nameof(alignBottomData))] AlignTestData data)
244+
{
245+
var alignValue = data.alignValue;
246+
var sourceRect = data.sourceRect;
247+
var actualRect = sourceRect.AlignBottom(alignValue);
248+
Assert.AreEqual(data.actualRect, actualRect);
249+
}
250+
251+
[Test]
252+
public void TestAlignTopPass([ValueSource(nameof(alignTopData))] AlignTestData data)
253+
{
254+
var alignValue = data.alignValue;
255+
var sourceRect = data.sourceRect;
256+
var actualRect = sourceRect.AlignTop(alignValue);
257+
Assert.AreEqual(data.actualRect, actualRect);
258+
}
259+
260+
[Test]
261+
public void TestAlignCenterXPass([ValueSource(nameof(alignCenterXData))] AlignTestData data)
262+
{
263+
var alignValue = data.alignValue;
264+
var sourceRect = data.sourceRect;
265+
var actualRect = sourceRect.AlignCenterX(alignValue);
266+
Assert.AreEqual(data.actualRect, actualRect);
267+
}
268+
269+
[Test]
270+
public void TestAlignCenterYPass([ValueSource(nameof(alignCenterYData))] AlignTestData data)
271+
{
272+
var alignValue = data.alignValue;
273+
var sourceRect = data.sourceRect;
274+
var actualRect = sourceRect.AlignCenterY(alignValue);
275+
Assert.AreEqual(data.actualRect, actualRect);
276+
}
277+
}
278+
}

Assets/Editor Toolbox/Tests/Runtime/RectExtensionsAlignTest.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)