return function()
	local MARGIN = 12
	local TRIANGLE_HEIGHT = 8 -- height / width will be swapped if pointing left / right
	local TRIANGLE_WIDTH = 16
	local getPositionInfo = require(script.Parent.getPositionInfo)
	local TooltipOrientation = require(script.Parent.Enum.TooltipOrientation)

	describe("getPositionInfo()", function()
		local triggerSize = Vector2.new(10, 10)
		local screenSize = Vector2.new(800, 600)
		it("should return proper position info", function()
			local positionInfo = getPositionInfo(50, 30, TooltipOrientation.Bottom, Vector2.new(0, 0), triggerSize, screenSize)
			expect(positionInfo).to.be.ok()
			expect(positionInfo.absolutePosition).to.equal(UDim2.fromOffset(MARGIN, 10))
			expect(positionInfo.position).to.equal(UDim2.fromOffset(MARGIN, 10))
			expect(positionInfo.animatedDistance).to.equal(UDim2.fromOffset(0, 4))
			expect(positionInfo.updatedOrientation).to.equal(TooltipOrientation.Bottom)
			expect(positionInfo.fillDirection).to.equal(Enum.FillDirection.Vertical)
			expect(positionInfo.caretLayoutOrder).to.equal(1)
			expect(positionInfo.contentLayoutOrder).to.equal(2)
			expect(positionInfo.caretPosition).to.equal(UDim2.fromOffset(MARGIN, 0))
			expect(positionInfo.caretImageSize).to.equal(UDim2.fromOffset(TRIANGLE_WIDTH, TRIANGLE_HEIGHT))
			expect(positionInfo.caretAnchorPoint).to.equal(Vector2.new(0.5, 0))
		end)
		it("should flip if space not enough under trigger point", function()
			local positionInfo = getPositionInfo(50, 30, TooltipOrientation.Bottom, Vector2.new(0, 580), triggerSize, screenSize)
			expect(positionInfo.absolutePosition).to.equal(UDim2.fromOffset(MARGIN, 542))
			expect(positionInfo.position).to.equal(UDim2.fromOffset(MARGIN, -38))
			expect(positionInfo.animatedDistance).to.equal(UDim2.fromOffset(0, -4))
			expect(positionInfo.updatedOrientation).to.equal(TooltipOrientation.Top)
			expect(positionInfo.caretLayoutOrder).to.equal(2)
			expect(positionInfo.contentLayoutOrder).to.equal(1)
		end)
	end)
end
