!! options
version=2
parsoid-compatible=wt2html,wt2wt,selser
!! end

# This is the standard article assumed to exist.
!! article
Main Page
!! text
blah blah
!! endarticle

# Force the test runner to ensure the extension is loaded
!! hooks
imagemap
!! endhooks

!! test
imagemap test 1
!! wikitext
<imagemap>
Image:Foobar.jpg
</imagemap>
!! html/php
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><span><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/File:Foobar.jpg" /></span><figcaption></figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File mw:Extension/imagemap" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nImage:Foobar.jpg\n"}}'><span><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></span><figcaption></figcaption></figure>
!! end

!! test
imagemap test 2
!! wikitext
<imagemap>
File:Foobar.jpg

poly 10.1 10.9 10 30 -30 15 [[Main Page]]
</imagemap>
!! html/php
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><span><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" usemap="#ImageMap_dfbc4e2707a0b3cc" resource="/wiki/File:Foobar.jpg" /></span><map name="ImageMap_dfbc4e2707a0b3cc"><area href="/wiki/Main_Page" shape="poly" coords="10,11,10,30,-30,15" alt="Main Page" title="Main Page" /></map><figcaption></figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File mw:Extension/imagemap" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg\n\npoly 10.1 10.9 10 30 -30 15 [[Main Page]]\n"}}'><span><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element" usemap="#ImageMap_02c94d3ca4bfc187"/></span><map name="ImageMap_02c94d3ca4bfc187"><area href="./Main_Page" shape="poly" coords="10,11,10,30,-30,15"/></map><figcaption></figcaption></figure>
!! end

!! test
imagemap test 3
!! wikitext
<imagemap>
File:Foobar.jpg|150px|alt=Alt text
default [[Main Page|Go to main page]]
</imagemap>
!! html/php
<figure class="noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><a href="/wiki/Main_Page" title="Go to main page"><img alt="Alt text" src="http://example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" decoding="async" width="150" height="17" class="mw-file-element" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 2x" resource="/wiki/File:Foobar.jpg" /></a><figcaption></figcaption></figure>
!! html/parsoid
<figure typeof="mw:File mw:Extension/imagemap" class="noresize mw-ext-imagemap-desc-bottom-right" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|150px|alt=Alt text\ndefault [[Main Page|Go to main page]]\n"}}'><a href="./Main_Page" title="Go to main page"><img alt="Alt text" resource="./File:Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 2x" class="mw-file-element"/></a><figcaption></figcaption></figure>
!! end

!! test
Empty imagemap
!! wikitext
<imagemap>
</imagemap>
!! html/php
<p class="error">Error: Must specify an image in the first line.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\n"},"errors":[{"key":"imagemap_no_image"}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_no_image"}}'></span></p>
!! end

!! test
Invalid image title
!! wikitext
<imagemap>
[[x|xx]]]]
</imagemap>
!! html/php
<p class="error">Error: Must specify an image in the first line.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\n[[x|xx]]]]\n"},"errors":[{"key":"imagemap_no_image"}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_no_image"}}'></span></p>
!! end

!! test
Image does not exist
!! wikitext
<imagemap>
File:Nopenopenope.jpg
</imagemap>
!! html/php
<p class="error">Error: Image is invalid or non-existent.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Nopenopenope.jpg\n"},"errors":[{"key":"imagemap_invalid_image"}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_invalid_image"}}'></span></p>
!! end

!! test
Invalid description type
!! wikitext
<imagemap>
Image:Foobar.jpg
desc nopenopenope
</imagemap>
!! html/php
<p class="error">Error: Invalid desc specification, must be one of: <code>top-right, bottom-right, bottom-left, top-left, none</code>.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nImage:Foobar.jpg\ndesc nopenopenope\n"},"errors":[{"key":"imagemap_invalid_desc","params":["top-right, bottom-right, bottom-left, top-left, none"]}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_invalid_desc","params":["top-right, bottom-right, bottom-left, top-left, none"]}}'></span></p>
!! end

!! test
Empty description type
!! wikitext
<imagemap>
Image:Foobar.jpg
desc
</imagemap>
!! html/php
<p class="error">Error: Invalid desc specification, must be one of: <code>top-right, bottom-right, bottom-left, top-left, none</code>.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nImage:Foobar.jpg\ndesc\n"},"errors":[{"key":"imagemap_invalid_desc","params":["top-right, bottom-right, bottom-left, top-left, none"]}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_invalid_desc","params":["top-right, bottom-right, bottom-left, top-left, none"]}}'></span></p>
!! end

!! test
Non-default description type
!! wikitext
<imagemap>
Image:Foobar.jpg
desc top-left
</imagemap>
!! html/php
<figure class="mw-default-size noresize mw-ext-imagemap-desc-top-left" typeof="mw:File"><span><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/File:Foobar.jpg" /></span><figcaption></figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize mw-ext-imagemap-desc-top-left" typeof="mw:File mw:Extension/imagemap" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nImage:Foobar.jpg\ndesc top-left\n"}}'><span><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></span><figcaption></figcaption></figure>
!! end

!! test
Non-default localized (French) description type
!! options
language=fr
!! wikitext
<imagemap>
Image:Foobar.jpg
desc haut-gauche
</imagemap>
!! html/php
<figure class="mw-default-size noresize mw-ext-imagemap-desc-top-left" typeof="mw:File"><span><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/Fichier:Foobar.jpg" /></span><figcaption></figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize mw-ext-imagemap-desc-top-left" typeof="mw:File mw:Extension/imagemap" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nImage:Foobar.jpg\ndesc haut-gauche\n"}}'><span><img resource="./Fichier:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></span><figcaption></figcaption></figure>
!! end

!! test
None description type
!! wikitext
<imagemap>
Image:Foobar.jpg
desc none
</imagemap>
!! html/php
<figure class="mw-default-size noresize" typeof="mw:File"><span><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" /></span><figcaption></figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize" typeof="mw:File mw:Extension/imagemap" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nImage:Foobar.jpg\ndesc none\n"}}'><span><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></span><figcaption></figcaption></figure>
!! end

!! test
No link title
!! wikitext
<imagemap>
File:Foobar.jpg
123
</imagemap>
!! html/php
<p class="error">Error: No valid link was found at the end of line 3.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg\n123\n"},"errors":[{"key":"imagemap_no_link","params":[3]}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_no_link","params":[3]}}'></span></p>
!! end

!! test
Invalid link title
!! wikitext
<imagemap>
File:Foobar.jpg
[[<]]
</imagemap>
!! html/php
<p class="error">Error: Invalid title in link at line 3.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg\n[[&lt;]]\n"},"errors":[{"key":"imagemap_invalid_title","params":[3]}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_invalid_title","params":[3]}}'></span></p>
!! end

## FIXME: Note the difference in the link alt
!! test
Link with wikitext syntax in content
!! wikitext
<imagemap>
File:Foobar.jpg|150px|alt=Alt text
default [[Main Page|Go to ''main page'']]
</imagemap>
!! html/php
<figure class="noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><a href="/wiki/Main_Page" title="Go to ''main page''"><img alt="Alt text" src="http://example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" decoding="async" width="150" height="17" class="mw-file-element" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 2x" resource="/wiki/File:Foobar.jpg" /></a><figcaption></figcaption></figure>
!! html/parsoid
<figure typeof="mw:File mw:Extension/imagemap" class="noresize mw-ext-imagemap-desc-bottom-right" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|150px|alt=Alt text\ndefault [[Main Page|Go to &apos;&apos;main page&apos;&apos;]]\n"}}'><a href="./Main_Page" title="Go to main page"><img alt="Alt text" resource="./File:Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 2x" class="mw-file-element"/></a><figcaption></figcaption></figure>
!! end

!! test
File with link= option
!! wikitext
<imagemap>
File:Foobar.jpg|link=|Hi ho
</imagemap>
!! html/php
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><span title="Hi ho"><img alt="Hi ho" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/File:Foobar.jpg" /></span><figcaption>Hi ho</figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File mw:Extension/imagemap" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=|Hi ho\n"}}'><span title="Hi ho"><img alt="Hi ho" resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></span><figcaption>Hi ho</figcaption></figure>
!! end

!! test
File with <br> in caption (T113791)
!! wikitext
<imagemap>
File:Foobar.jpg|thumb|a<br>b
</imagemap>
!! html/php
<figure class="mw-default-size noresize" typeof="mw:File/Thumb"><span><img src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="mw-file-element" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" resource="/wiki/File:Foobar.jpg" /></span><figcaption>a<br />b</figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize" typeof="mw:File/Thumb mw:Extension/imagemap" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|thumb|a&lt;br>b\n"}}'><span><img resource="./File:Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="180" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" class="mw-file-element"/></span><figcaption>a<br/>b</figcaption></figure>
!! end

!! test
File with <br /> in caption (T113791)
!! wikitext
<imagemap>
File:Foobar.jpg|thumb|a<br />b
</imagemap>
!! html/php
<figure class="mw-default-size noresize" typeof="mw:File/Thumb"><span><img src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" class="mw-file-element" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" resource="/wiki/File:Foobar.jpg" /></span><figcaption>a<br />b</figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize" typeof="mw:File/Thumb mw:Extension/imagemap" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|thumb|a&lt;br />b\n"}}'><span><img resource="./File:Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="180" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" class="mw-file-element"/></span><figcaption>a<br/>b</figcaption></figure>
!! end

## In contrast with galleries
!! test
Imagemap without file namespace
!! wikitext
<imagemap>
Foobar.jpg
</imagemap>
!! html/php
<p class="error">Error: Must specify an image in the first line.</p>
!! html/parsoid
<p><span typeof="mw:I18n mw:Extension/imagemap mw:Error" class="error" about="#mwt2" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFoobar.jpg\n"},"errors":[{"key":"imagemap_no_image"}]}' data-mw-i18n='{"/":{"lang":"x-user","key":"imagemap_no_image"}}'></span></p>
!! end

!! test
Imagemap with external link
!! config
wgExternalLinkTarget="_blank"
!! wikitext
<imagemap>
File:Foobar.jpg
default [http://google.com]
</imagemap>
!! html/php
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><a target="_blank" rel="nofollow noreferrer noopener" href="http://google.com" class="plainlinks" title="http://google.com"><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/File:Foobar.jpg" /></a><figcaption></figcaption></figure>
!! html/parsoid
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File mw:Extension/imagemap" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg\ndefault [http://google.com]\n"}}'><a href="http://google.com" class="plainlinks" rel="nofollow noreferrer noopener" target="_blank"><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></a><figcaption></figcaption></figure>
!! end

!! test
Imagemap with interlanguage link
!! wikitext
[[es:Lalala]]

<imagemap>
File:Foobar.jpg
default [[es:Lalala]]
</imagemap>
!! html/php
<p><br />
</p>
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><a href="http://es.wikipedia.org/wiki/Lalala" title="es:Lalala"><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/File:Foobar.jpg" /></a><figcaption></figcaption></figure>
!! html/parsoid
<link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Lalala"/>

<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File mw:Extension/imagemap" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg\ndefault [[es:Lalala]]\n"}}'><a href="http://es.wikipedia.org/wiki/Lalala"><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></a><figcaption></figcaption></figure>
!! end

!! test
Imagemap with category link
!! wikitext
[[category:Lalala]]

<imagemap>
File:Foobar.jpg
default [[category:Lalala]]
</imagemap>
!! html/php
<p><br />
</p>
<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File"><a href="/wiki/Category:Lalala" title="Category:Lalala"><img src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" class="mw-file-element" resource="/wiki/File:Foobar.jpg" /></a><figcaption></figcaption></figure>
!! html/parsoid
<link rel="mw:PageProp/Category" href="./Category:Lalala"/>

<figure class="mw-default-size noresize mw-ext-imagemap-desc-bottom-right" typeof="mw:File mw:Extension/imagemap" data-mw='{"name":"imagemap","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg\ndefault [[category:Lalala]]\n"}}'><a href="./Category:Lalala"><img resource="./File:Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" class="mw-file-element"/></a><figcaption></figcaption></figure>
!! end
