public void Calculate_ScrollerElementIsNOTUndersizedToCursorLength_NormalizedCursoredPositionOnAxisWithinRange_ReturnsZero( Vector2 normalizedCursoredPosition ) { IScroller scroller = Substitute.For <IScroller>(); scroller.ScrollerElementIsUndersizedTo(Arg.Any <Vector2>(), Arg.Any <int>()).Returns(false); Vector2 anyCursorLength = Vector2.zero; Vector2 anyCursorPosition = Vector2.zero; Vector2 anyScrollerElementLength = Vector2.zero; ElementCursorOffsetInPixelCalculator calculator = new ElementCursorOffsetInPixelCalculator( scroller, anyCursorLength, anyCursorPosition, anyScrollerElementLength ); float anyLocalPos = 0f; for (int i = 0; i < 2; i++) { scroller.GetNormalizedCursoredPositionOnAxis(Arg.Any <float>(), i).Returns(normalizedCursoredPosition[i]); float actual = calculator.Calculate(anyLocalPos, i); Assert.That(actual, Is.EqualTo(0f)); } }
public void Calculate_ScrollerElementIsNOTUndersizedToCursorLength_NormalizedCursoredPositionOnAxisNotWithinRange_ReturnsNonZeroVarious( Vector2 normalizedCursoredPosition, Vector2 scrollerElementLength, Vector2 cursorLength, Vector2 expected ) { IScroller scroller = Substitute.For <IScroller>(); scroller.ScrollerElementIsUndersizedTo(Arg.Any <Vector2>(), Arg.Any <int>()).Returns(false); Vector2 anyCursorPosition = Vector2.zero; ElementCursorOffsetInPixelCalculator calculator = new ElementCursorOffsetInPixelCalculator( scroller, cursorLength, anyCursorPosition, scrollerElementLength ); for (int i = 0; i < 2; i++) { scroller.GetNormalizedCursoredPositionOnAxis(Arg.Any <float>(), i).Returns(normalizedCursoredPosition[i]); float actual = calculator.Calculate(normalizedCursoredPosition[i], i); Assert.That(actual, Is.EqualTo(expected[i])); } }
public float Calculate(float scrollerElementLocalPosOnAxis, int dimension) { if (thisScroller.ScrollerElementIsUndersizedTo(thisCursorLength, dimension)) { return(thisCursorLocalPosition[dimension] - scrollerElementLocalPosOnAxis); } else { float elementNormalizedCursoredPos = thisScroller.GetNormalizedCursoredPositionOnAxis(scrollerElementLocalPosOnAxis, dimension); float normalizedOffset = elementNormalizedCursoredPos; if (elementNormalizedCursoredPos <= 1f && elementNormalizedCursoredPos >= 0f) { normalizedOffset = 0f; } else if (elementNormalizedCursoredPos > 1f) { normalizedOffset = elementNormalizedCursoredPos - 1f; } return(normalizedOffset * (thisScrollerElementLength[dimension] - thisCursorLength[dimension])); } }