FLEX-35260 Now in the unit test we're also verifying areCoordinatesOverAHeaderView(). Currently fails (for point "b").
diff --git a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
index 925ea0c..55421f4 100644
--- a/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
+++ b/frameworks/projects/spark/tests/spark/components/gridClasses/GridHeaderViewLayout_FLEX_35260_Tests.as
@@ -89,6 +89,7 @@
private var _keyRectangles:Array;
private var _keyPoints:Array;
+ //@TODO add cases with horizontal scroll, and also with fixed columns
public static var dimensions:Array = [/*x, y, width, header padding left, header padding top, [column widths] */
[[10, 0, 300, 5, 0, [25, 150]]],
[[0, 0, 300, 5, 0, [25, 150]]]
@@ -124,20 +125,7 @@
_keyPoints = null;
}
- /*[Ignore]
- [Test]
- public function test_global_coordinates_over_header_view(globalPoint:Array, expectedHeaderIndex:int):void
- {
- //given
- var pointOverAHeaderView:Boolean = expectedHeaderIndex != -1;
-
- //when
- var doesHeaderContainThisPoint:Boolean = _sut.areCoordinatesOverAHeaderView(new Point(globalPoint[0], globalPoint[1]));
-
- //then
- assertEquals(pointOverAHeaderView, doesHeaderContainThisPoint);
- }
-
+ /*
[Ignore]
[Test]
public function test_column_index(globalPoint:Array, expectedColumnIndex:int):void
@@ -196,14 +184,21 @@
{
for (var i:int = 0; i < directions.length; i++)
{
+ //given
+ var pointToTest:Point = getAdjacentPoint(_keyPoints[pointName], directions[i]);
+
//when
- var adjacentPoint:Point = getAdjacentPoint(_keyPoints[pointName], directions[i]);
- var expectedHeaderIndex:int = getHeaderIndexAssumption(adjacentPoint);
- var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(adjacentPoint);
+ var expectedHeaderIndex:int = getHeaderIndexAssumption(pointToTest);
+ var actualHeaderIndex:int = getHeaderIndexAtGlobalPoint(pointToTest);
+ const errorMessageHeaderIndex:String = getHeaderIndexErrorMessage(pointName, directions[i], pointToTest, expectedHeaderIndex, actualHeaderIndex);
+
+ var shouldBeContainedInHeader:Boolean = getHeaderContainsPointAssumption(pointToTest);
+ var actuallyContainedInHeader:Boolean = _sut.areCoordinatesOverAHeaderView(pointToTest);
+ const errorMessageHeaderContainsPoint:String = getHeaderContainsPointErrorMessage(pointName, directions[i], pointToTest, shouldBeContainedInHeader, actuallyContainedInHeader);
//then
- const errorMessage:String = getHeaderIndexErrorMessage(pointName, directions[i], adjacentPoint, expectedHeaderIndex, actualHeaderIndex);
- assertEquals(errorMessage, expectedHeaderIndex, actualHeaderIndex);
+ assertEquals(errorMessageHeaderIndex, expectedHeaderIndex, actualHeaderIndex);
+ assertEquals(errorMessageHeaderContainsPoint, shouldBeContainedInHeader, actuallyContainedInHeader);
}
}
}
@@ -217,12 +212,26 @@
+ "\n DEBUG INFO: headerRectangles=" + headerRectangles);
}
+ private function getHeaderContainsPointErrorMessage(pointName:String, direction:Matrix, transformedPoint:Point, shouldBeContainedInHeader:Boolean, isActuallyContainedInHeader:Boolean):String
+ {
+ return "The point " + pointName + " transformed with Matrix " + direction + " (resulting in " + transformedPoint + ") should be "
+ + (shouldBeContainedInHeader ? "within " : "outside ") + "header bounds"
+ + " but was mistakenly found to be "
+ + (isActuallyContainedInHeader ? "within" : "outside")
+ + "\n DEBUG INFO: headerRectangle=" + headerRectangle;
+ }
+
private function getHeaderIndexAtGlobalPoint(globalPoint:Point):int
{
var localPoint:Point = _sut.globalToLocal(globalPoint);
return _sut.getHeaderIndexAt(localPoint.x, localPoint.y);
}
+ private function getHeaderContainsPointAssumption(point:Point):Boolean
+ {
+ return rectangleContainsPoint(headerRectangle, point);
+ }
+
private function getHeaderIndexAssumption(point:Point):int
{
return getIndexOfHeaderRectangleWhichContainsPoint(point, headerRectangles);
@@ -290,10 +299,16 @@
var keyRectangles:Array = [];
keyRectangles["headerRectangles"] = generateHeaderRectangles(keyPoints, dimensions);
+ keyRectangles["headerRectangle"] = generateVisibleHeaderRectangle(keyPoints, dimensions);
return keyRectangles;
}
+ private function generateVisibleHeaderRectangle(keyPoints:Array, dimensions:Array):Rectangle
+ {
+ const topLeftCorner:Point = keyPoints["b"];
+ return new Rectangle(topLeftCorner.x, topLeftCorner.y, getHeaderWidthFromKeyPoints(keyPoints), getHeaderHeightFromKeyPoints(keyPoints));
+ }
private function generateHeaderRectangles(keyPoints:Array, dimensions:Array):Array
{
var headerRectangles:Array = [];
@@ -319,6 +334,11 @@
return _keyRectangles["headerRectangles"];
}
+ private function get headerRectangle():Rectangle
+ {
+ return _keyRectangles["headerRectangle"] as Rectangle;
+ }
+
private function getColumnWidthFromKeyPoints(keyPoints:Array, columnIndex:int):Number
{
//we're assuming columnIndex has a valid value
@@ -361,6 +381,11 @@
return Point(keyPoints["h"]).y - Point(keyPoints["e"]).y;
}
+ private function getHeaderWidthFromKeyPoints(keyPoints:Array):Number
+ {
+ return Point(keyPoints["e"]).x - Point(keyPoints["b"]).x;
+ }
+
private function getColumnWidths(dimensions:Array):Array
{
return dimensions[5];