2019-07-30 09:35:42 +02:00
/* eslint-disable no-unused-vars */
2018-12-29 19:24:02 +02:00
require ( 'app-module-path' ) . addPath ( _ _dirname ) ;
2019-09-24 00:23:10 +02:00
const { asyncTest } = require ( 'test-utils.js' ) ;
2018-12-29 19:24:02 +02:00
const StringUtils = require ( 'lib/string-utils' ) ;
process . on ( 'unhandledRejection' , ( reason , p ) => {
console . log ( 'Unhandled Rejection at: Promise' , p , 'reason:' , reason ) ;
} ) ;
describe ( 'StringUtils' , function ( ) {
beforeEach ( async ( done ) => {
done ( ) ;
} ) ;
2019-09-24 00:23:10 +02:00
it ( 'should surround keywords with strings' , asyncTest ( async ( ) => {
2018-12-29 19:24:02 +02:00
const testCases = [
2018-12-29 21:19:18 +02:00
[ [ ] , 'test' , 'a' , 'b' , 'test' ] ,
2018-12-29 19:24:02 +02:00
[ [ 'test' ] , 'test' , 'a' , 'b' , 'atestb' ] ,
[ [ 'test' ] , 'Test' , 'a' , 'b' , 'aTestb' ] ,
[ [ 'te[]st' ] , 'Te[]st' , 'a' , 'b' , 'aTe[]stb' ] ,
2019-01-31 11:48:48 +02:00
// [['test1', 'test2'], 'bla test1 blabla test1 bla test2 not this one - test22', 'a', 'b', 'bla atest1b blabla atest1b bla atest2b not this one - test22'],
2018-12-29 19:24:02 +02:00
[ [ 'test1' , 'test2' ] , 'bla test1 test1 bla test2' , '<span class="highlighted-keyword">' , '</span>' , 'bla <span class="highlighted-keyword">test1</span> <span class="highlighted-keyword">test1</span> bla <span class="highlighted-keyword">test2</span>' ] ,
2019-01-31 11:48:48 +02:00
// [[{ type:'regex', value:'test.*?'}], 'bla test1 test1 bla test2 test tttest', 'a', 'b', 'bla atest1b atest1b bla atest2b atestb tttest'],
2018-12-29 19:24:02 +02:00
] ;
for ( let i = 0 ; i < testCases . length ; i ++ ) {
const t = testCases [ i ] ;
const keywords = t [ 0 ] ;
const input = t [ 1 ] ;
const prefix = t [ 2 ] ;
const suffix = t [ 3 ] ;
const expected = t [ 4 ] ;
const actual = StringUtils . surroundKeywords ( keywords , input , prefix , suffix ) ;
2019-09-19 23:51:18 +02:00
expect ( actual ) . toBe ( expected , ` Test case ${ i } ` ) ;
2018-12-29 19:24:02 +02:00
}
2019-09-24 00:23:10 +02:00
} ) ) ;
2018-12-29 19:24:02 +02:00
2020-03-28 15:05:00 +02:00
it ( 'should find the next whitespace character' , asyncTest ( async ( ) => {
const testCases = [
[ '' , [ [ 0 , 0 ] ] ] ,
[ 'Joplin' , [ [ 0 , 6 ] , [ 3 , 6 ] , [ 6 , 6 ] ] ] ,
[ 'Joplin is a free, open source\n note taking and *to-do* application' , [ [ 0 , 6 ] , [ 12 , 17 ] , [ 23 , 29 ] , [ 48 , 54 ] ] ] ,
] ;
testCases . forEach ( ( t , i ) => {
const str = t [ 0 ] ;
t [ 1 ] . forEach ( ( pair , j ) => {
const begin = pair [ 0 ] ;
const expected = pair [ 1 ] ;
const actual = StringUtils . nextWhitespaceIndex ( str , begin ) ;
expect ( actual ) . toBe ( expected , ` Test string ${ i } - case ${ j } ` ) ;
} ) ;
} ) ;
} ) ) ;
2019-07-30 09:35:42 +02:00
} ) ;