Spaces:
Running
Running
; | |
const assert = require('assert').strict; | |
describe('Chat', () => { | |
it('should run formatText correctly', () => { | |
assert.equal( | |
Chat.formatText(`hi **__bold italics__** ^^superscript^^ \\\\subscript\\\\ normal ~~strikethrough~~ bye`), | |
`hi <b><i>bold italics</i></b> <sup>superscript</sup> <sub>subscript</sub> normal <s>strikethrough</s> bye` | |
); | |
assert.equal( | |
Chat.formatText(`__**reverse nesting**__`), | |
`<i><b>reverse nesting</b></i>` | |
); | |
assert.equal( | |
Chat.formatText(`__**bad nesting__**`), | |
`<i>**bad nesting</i>**` | |
); | |
assert.equal( | |
Chat.formatText(`spaced ** out ** no __also no __ ~~ also no~~ ok`), | |
`spaced ** out ** no __also no __ ~~ also no~~ ok` | |
); | |
assert.equal( | |
Chat.formatText(`hi \`\` \` \`\` bye`), | |
`hi <code>\`</code> bye` | |
); | |
assert.equal( | |
Chat.formatText(`hi \`\`inside __not__ formatted\`\` bye`), | |
`hi <code>inside __not__ formatted</code> bye` | |
); | |
assert.equal( | |
Chat.formatText(`<<roomid-1-2-3>> <<roomid_1_2_3>>`), | |
`«<a href="/roomid-1-2-3" target="_blank">roomid-1-2-3</a>» <<roomid_1_2_3>>` | |
); | |
assert.equal( | |
Chat.formatText(`hi __spoiler: bye__ hi again (parenthetical spoiler: bye again (or not!!!!)) that was fun`), | |
`hi <i>spoiler: <span class="spoiler">bye</span></i> hi again (parenthetical spoiler: <span class="spoiler">bye again (or not!!!!)</span>) that was fun` | |
); | |
assert.equal( | |
Chat.formatText(`hi __||bye||__ hi again (parenthetical ||bye again (or not!!!!)||) that was fun`), | |
`hi <i><span class="spoiler">bye</span></i> hi again (parenthetical <span class="spoiler">bye again (or not!!!!)</span>) that was fun` | |
); | |
assert.equal( | |
Chat.formatText(`hi google.com/__a__ bye >w<`), | |
`hi <a href="http://google.com/__a__" rel="noopener" target="_blank">google.com/__a__</a> bye >w<` | |
); | |
assert.equal( | |
Chat.formatText(`(https://en.wikipedia.org/wiki/Pokémon_(video_game_series))`), | |
`(<a href="https://en.wikipedia.org/wiki/Pokémon_(video_game_series)" rel="noopener" target="_blank">https://en.wikipedia.org/wiki/Pokémon_(video_game_series)</a>)` | |
); | |
assert.equal( | |
Chat.formatText(`hi [email protected] bye >w<`), | |
`hi <a href="mailto:[email protected]" rel="noopener" target="_blank">[email protected]</a> bye >w<` | |
); | |
assert.equal( | |
Chat.formatText(`hi [email protected] bye >w<`), | |
`hi <a href="mailto:[email protected]" rel="noopener" target="_blank">[email protected]</a> bye >w<` | |
); | |
assert.equal( | |
Chat.formatText(`>greentext`), | |
`<span class="greentext">>greentext</span>` | |
); | |
assert.equal( | |
Chat.formatText(`>w< not greentext >also not greentext`), | |
`>w< not greentext >also not greentext` | |
); | |
assert.equal( | |
Chat.formatText(`[[Google <http://www.google.com/>]] >w<`), | |
`<a href="http://www.google.com/" rel="noopener" target="_blank">Google<small> <google.com></small></a> >w<` | |
); | |
assert.equal( | |
Chat.formatText(`[[Google <google.com>]] >w<`, true), | |
`<a href="http://google.com" target="_blank">Google</a> >w<` | |
); | |
assert.equal( | |
Chat.formatText(`[[wiki: Pokemon]] >w<`, true), | |
`<a href="//en.wikipedia.org/w/index.php?title=Special:Search&search=Pokemon" target="_blank">wiki: Pokemon</a> >w<` | |
); | |
assert.equal( | |
Chat.formatText(`[[wiki: D&D D&D]] [[A>B A>B]] &`, true), | |
`<a href="//en.wikipedia.org/w/index.php?title=Special:Search&search=D%26D%20D%26amp%3BD" target="_blank">wiki: D&D D&amp;D</a> <a href="//www.google.com/search?ie=UTF-8&btnI&q=A%3EB%20A%26gt%3BB" target="_blank">A>B A&gt;B</a> &amp;` | |
); | |
assert.equal( | |
Chat.formatText(`[[pokemon: Oshawott]] >w<`, true), | |
`<a href="//dex.pokemonshowdown.com/pokemon/oshawott" target="_blank"><psicon pokemon="Oshawott" /></a> >w<` | |
); | |
assert.equal( | |
Chat.formatText(`[[item: Beast ball]] >w<`), | |
`<a href="//dex.pokemonshowdown.com/items/beastball" target="_blank">[Beast ball]</a> >w<` | |
); | |
assert.equal( | |
Chat.formatText(`:)`, true), | |
`:)` | |
); | |
assert.equal( | |
Chat.formatText(`a\nb\nc`), | |
`a\nb\nc` | |
); | |
assert.equal( | |
Chat.formatText(`a\nb\nc`, true), | |
`a<br />b<br />c` | |
); | |
assert.equal( | |
Chat.formatText(`a\nb\nc`, false, true), | |
`a<br />b<br />c` | |
); | |
}); | |
it('should run toDurationString correctly', () => { | |
assert(Chat.toDurationString(1e50)); | |
assert(!Chat.toDurationString(10000000 * 24 * 60 * 60 * 1000).includes(' ')); | |
}); | |
}); | |