From 4773595748fe47138a14617cd35ac1f53b9b7d47 Mon Sep 17 00:00:00 2001 From: Luis Camacho Date: Wed, 25 May 2022 14:33:29 +0100 Subject: [PATCH] added tests for drawTextOnPath multi-line text handling --- test/node/ol/geom/flat/textpath.test.js | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/test/node/ol/geom/flat/textpath.test.js b/test/node/ol/geom/flat/textpath.test.js index af5b0da8bb..f88b569b06 100644 --- a/test/node/ol/geom/flat/textpath.test.js +++ b/test/node/ol/geom/flat/textpath.test.js @@ -242,4 +242,59 @@ describe('ol/geom/flat/drawTextOnPath.js', function () { expect(instructions[0][3]).to.be((45 * Math.PI) / 180); expect(instructions.length).to.be(1); }); + + it('renders multi-line in one segment', function () { + const foo = 'foo'; + const bar = 'bar'; + const text = foo + '\n' + bar; + const pathLength = lineStringLength(angled, 2, angled.length, 2); + const textLength = measureAndCacheTextWidth('', bar); + const textAlign = 0.5; + const startM = (pathLength - textLength) * textAlign; + const instructions = drawTextOnPath( + angled, + 0, + angled.length, + 2, + text, + startM, + Infinity, + 1, + measureAndCacheTextWidth, + '', + {} + ); + expect(instructions[0][3]).to.be((45 * Math.PI) / 180); + expect(instructions[0][4]).to.be(text); + expect(instructions.length).to.be(1); + }); + + it('renders multi-line as single-line across segments', function () { + const foo = 'foo-foo-foo'; + const bar = 'bar-bar-bar-bar-bar-bar-bar'; + const text = foo + '\n' + bar; + const pathLength = lineStringLength(angled, 2, angled.length, 2); + const textLength = measureAndCacheTextWidth('', bar); + const textAlign = 0.5; + const startM = (pathLength - textLength) * textAlign; + + const instructions = drawTextOnPath( + angled, + 0, + angled.length, + 2, + text, + startM, + Infinity, + 1, + measureAndCacheTextWidth, + '', + {} + ); + expect(instructions[0][3]).to.be((45 * Math.PI) / 180); + expect(instructions[0][4]).to.be('foo-foo-foo bar-bar-b'); + expect(instructions.length).to.be(2); + expect(instructions[1][3]).to.be((-45 * Math.PI) / 180); + expect(instructions[1][4]).to.be('ar-bar-bar-bar-bar'); + }); });