@rpidanny/pdf2md
Version:
A PDF to Markdown Converter
212 lines (179 loc) • 8.8 kB
JavaScript
const { expect } = require('chai')
const { hasUpperCaseCharacterInMiddleOfWord, normalizedCharCodeArray, removeLeadingWhitespaces, removeTrailingWhitespaces, prefixAfterWhitespace, suffixBeforeWhitespace, charCodeArray, isListItem, isNumberedListItem, wordMatch, hasOnly, isListItemCharacter } = require('../../lib/util/string-functions')
describe('functions: hasUpperCaseCharacterInMiddleOfWord', () => {
it('single word', () => {
expect(hasUpperCaseCharacterInMiddleOfWord('word')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('Word')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('wOrd')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('woRd')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('worD')).to.equal(true)
})
it('multi words', () => {
expect(hasUpperCaseCharacterInMiddleOfWord('Hello World')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('hello world')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('HelloWorld')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('HellO World')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('Hello WOrld')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('Hello WorlD')).to.equal(true)
})
it('with numbers', () => {
expect(hasUpperCaseCharacterInMiddleOfWord('high5')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('High5')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('High 5')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('High 5th')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord("High 5'sec")).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('Type-0-mat')).to.equal(false)
expect(hasUpperCaseCharacterInMiddleOfWord('HigH 5')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('High 5E')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord('High 5 or tWo down')).to.equal(true)
expect(hasUpperCaseCharacterInMiddleOfWord("High 5'Sec")).to.equal(true)
})
})
describe('functions: removeLeadingWhitespaces', () => {
it('No Removes', () => {
expect(removeLeadingWhitespaces('.')).to.be.equal('.')
expect(removeLeadingWhitespaces('. ')).to.be.equal('. ')
expect(removeLeadingWhitespaces('. . ')).to.be.equal('. . ')
})
it('Removes', () => {
expect(removeLeadingWhitespaces(' .')).to.be.equal('.')
expect(removeLeadingWhitespaces(' .')).to.be.equal('.')
expect(removeLeadingWhitespaces(' . ')).to.be.equal('. ')
expect(removeLeadingWhitespaces(' . . ')).to.be.equal('. . ')
})
})
describe('functions: removeTrailingWhitespaces', () => {
it('No Removes', () => {
expect(removeTrailingWhitespaces('.')).to.be.equal('.')
expect(removeTrailingWhitespaces(' .')).to.be.equal(' .')
expect(removeTrailingWhitespaces(' . .')).to.be.equal(' . .')
})
it('Removes', () => {
expect(removeTrailingWhitespaces('. ')).to.be.equal('.')
expect(removeTrailingWhitespaces('. ')).to.be.equal('.')
expect(removeTrailingWhitespaces(' . ')).to.be.equal(' .')
expect(removeTrailingWhitespaces(' . . ')).to.be.equal(' . .')
})
})
describe('functions: prefixAfterWhitespace', () => {
it('Basic', () => {
expect(prefixAfterWhitespace('1', '2')).to.be.equal('12')
expect(prefixAfterWhitespace(' 1', '2')).to.be.equal(' 12')
expect(prefixAfterWhitespace(' 1', ' 2')).to.be.equal(' 12')
expect(prefixAfterWhitespace('1', ' 2')).to.be.equal(' 12')
expect(prefixAfterWhitespace('1', ' 2')).to.be.equal(' 12')
})
})
describe('functions: suffixBeforeWhitespace', () => {
it('Basic', () => {
expect(suffixBeforeWhitespace('A ', '.')).to.be.equal('A. ')
expect(suffixBeforeWhitespace(' A', '.')).to.be.equal(' A.')
expect(suffixBeforeWhitespace(' A ', ' .')).to.be.equal(' A . ')
expect(suffixBeforeWhitespace('A', ' .')).to.be.equal('A .')
expect(suffixBeforeWhitespace('A ', '.')).to.be.equal('A. ')
})
})
describe('functions: charCodeArray', () => {
it('Charcodes', () => {
expect(charCodeArray('.')).to.have.lengthOf(1).to.contain(46)
})
it('Convert Back', () => {
expect(String.fromCharCode.apply(null, charCodeArray('word'))).to.equal('word')
expect(String.fromCharCode.apply(null, charCodeArray('WORD'))).to.equal('WORD')
expect(String.fromCharCode.apply(null, charCodeArray('a word'))).to.equal('a word')
})
})
describe('functions: normalizedCharCodeArray', () => {
it('No Change', () => {
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('WORD'))).to.equal('WORD')
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('WORD23'))).to.equal('WORD23')
})
it('lowecaseToUpperCase', () => {
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('word'))).to.equal('WORD')
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('WoRd'))).to.equal('WORD')
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('word23'))).to.equal('WORD23')
})
it('RemoveWhiteSpace', () => {
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('A WORD'))).to.equal('AWORD')
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('SOME LITTLE SENTENCE.'))).to.equal('SOMELITTLESENTENCE')
})
it('All', () => {
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('a word'))).to.equal('AWORD')
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('WoRd 4 u'))).to.equal('WORD4U')
expect(String.fromCharCode.apply(null, normalizedCharCodeArray('Some little sentence.'))).to.equal('SOMELITTLESENTENCE')
})
})
describe('functions: isListItem', () => {
it('Match', () => {
expect(isListItem('- my text')).to.equal(true)
expect(isListItem('- my text -')).to.equal(true)
expect(isListItem(' - my text')).to.equal(true)
expect(isListItem(' - my text')).to.equal(true)
expect(isListItem(' - my text')).to.equal(true)
expect(isListItem('• my text')).to.equal(true)
expect(isListItem(' • my text')).to.equal(true)
expect(isListItem(' • my text')).to.equal(true)
expect(isListItem('– my text')).to.equal(true)
expect(isListItem(' – my text')).to.equal(true)
})
it('No Match', () => {
expect(isListItem('my text')).to.equal(false)
expect(isListItem('-my text')).to.equal(false)
expect(isListItem('•my text')).to.equal(false)
expect(isListItem(' -my text')).to.equal(false)
})
})
describe('functions: isNumberedListItem', () => {
it('Match', () => {
expect(isNumberedListItem('1. my text')).to.equal(true)
expect(isNumberedListItem('2. my text')).to.equal(true)
expect(isNumberedListItem('23. my text')).to.equal(true)
expect(isNumberedListItem('23. my text')).to.equal(true)
expect(isNumberedListItem(' 23. my text')).to.equal(true)
expect(isNumberedListItem(' 23. my text')).to.equal(true)
})
it('No Match', () => {
expect(isNumberedListItem('1two')).to.equal(false)
expect(isNumberedListItem('1 two')).to.equal(false)
expect(isNumberedListItem('1.two')).to.equal(false)
})
})
describe('functions: wordsMatch', () => {
it('Match', () => {
expect(wordMatch('text 1', 'text 1')).to.equal(1.0)
expect(wordMatch('text 1', 'text 2')).to.equal(0.5)
expect(wordMatch('text 1', 'text 1 2')).to.equal(0.6666666666666666)
expect(wordMatch('text 1 2 3', 'text 1 4 5')).to.equal(0.5)
expect(wordMatch('text 1 2 3', '5 1 4 text')).to.equal(0.5)
expect(wordMatch('text 1 2 3', 'text')).to.equal(0.25)
expect(wordMatch('text', 'test')).to.equal(0.0)
expect(wordMatch('inStruCtionS for the full Moon proCeSS', 'Instructions for the Full Moon Process')).to.equal(1.0)
})
})
describe('functions: hasOnly', () => {
it('Match', () => {
expect(hasOnly('a', 'a')).to.equal(true)
expect(hasOnly('aaaa', 'a')).to.equal(true)
})
it('No Match', () => {
expect(hasOnly('abc', 'a')).to.equal(false)
expect(hasOnly('abc', '')).to.equal(false)
expect(hasOnly('abc', 'ab')).to.equal(false)
expect(hasOnly('abc', '1')).to.equal(false)
})
})
describe('functions: isListItemCharacter', () => {
it('Match', () => {
expect(isListItemCharacter('-')).to.equal(true)
expect(isListItemCharacter('•')).to.equal(true)
expect(isListItemCharacter('–')).to.equal(true)
})
it('No Match', () => {
expect(isListItemCharacter('--')).to.equal(false)
expect(isListItemCharacter('••')).to.equal(false)
expect(isListItemCharacter('––')).to.equal(false)
expect(isListItemCharacter('')).to.equal(false)
expect(isListItemCharacter('a')).to.equal(false)
expect(isListItemCharacter('abc')).to.equal(false)
})
})