awesome-string
Version:
The ultimate JavaScript string library
74 lines (67 loc) • 3.67 kB
JavaScript
import as from '../awesome-string';
import { expect } from 'chai';
import { PRINTABLE_ASCII } from '../const';
describe('countcountWords', function() {
it('should the words in a string', function() {
expect(as.countWords('123')).to.equal(1);
expect(as.countWords('15+20=35')).to.equal(3);
expect(as.countWords('hello')).to.equal(1);
expect(as.countWords(' hello ')).to.equal(1);
expect(as.countWords('hello world')).to.equal(2);
expect(as.countWords('12+14-18*400')).to.equal(4);
expect(as.countWords('gravity can cross dimensions')).to.equal(4);
expect(as.countWords('-gravity-can-cross-dimensions-')).to.equal(4);
expect(as.countWords('gravity_can_cross_dimensions')).to.equal(4);
expect(as.countWords('*gravity***can****cross&&dimensions++')).to.equal(4);
expect(as.countWords('GravityCanCrossDimensions')).to.equal(4);
expect(as.countWords('GRAVITYCan')).to.equal(2);
expect(as.countWords('GravityCan')).to.equal(2);
expect(as.countWords('GravityCANAttract')).to.equal(3);
expect(as.countWords('gravityCan')).to.equal(2);
expect(as.countWords('Gravity-Can11Cross **Dimensions1Foo')).to.equal(7);
expect(as.countWords('Cooper... Cooper... Come in, Cooper.')).to.equal(5);
expect(as.countWords('Newton\'s third law')).to.equal(4);
expect(as.countWords('Newton\'s thIrd lAw')).to.equal(6);
expect(as.countWords(PRINTABLE_ASCII)).to.equal(3);
expect(as.countWords('')).to.equal(0);
expect(as.countWords()).to.equal(0);
expect(as.countWords(' ')).to.equal(0);
expect(as.countWords(' ')).to.equal(0);
expect(as.countWords('\n')).to.equal(0);
expect(as.countWords('***')).to.equal(0);
expect(as.countWords('***---')).to.equal(0);
expect(as.countWords('***---')).to.equal(0);
expect(as.countWords('man\u0303ana')).to.equal(1);
expect(as.countWords('maN\u0303ana')).to.equal(2);
expect(as.countWords('foo\u0303\u035C\u035D\u035E bar')).to.equal(2);
expect(as.countWords('fo-O-O\u0303\u035C\u035D\u035E-bar')).to.equal(4);
});
it('should count the words in a string with diacritics', function() {
expect(as.countWords('clasificación biológica.')).to.equal(2);
expect(as.countWords('BunăZiua')).to.equal(2);
expect(as.countWords('Bună1ZiUa!')).to.equal(4);
expect(as.countWords('Język /polski wywodzi się z` języka` praindoeuropejskiego za**pośrednictwem+języka-prasłowiańskiego.'))
.to.equal(11);
expect(as.countWords('Гравитация притягивает все')).to.equal(3);
expect(as.countWords('Гравитация-Притягивает-ВСЕ!!')).to.equal(3);
expect(as.countWords('Στις--αρχές** (του) 21ου, αιώνα!')).to.equal(6);
});
it('should count the countWords in a string representation of an object', function() {
expect(as.countWords(['GravityCanCrossDimensions'])).to.equal(4);
expect(as.countWords({
toString: function() {
return 'Gr4v1ty';
}
})).to.equal(5);
});
it('should count the words in a string into countWords using a pattern', function() {
expect(as.countWords('1234567890', /\d/g)).to.equal(10);
expect(as.countWords('gravity', /\w{1,2}/g)).to.equal(4);
expect(as.countWords('gravity can cross dimensions', '\\w+(?=\\s?)', 'g')).to.equal(4);
expect(as.countWords('1234567890', /\s/g)).to.equal(0);
});
it('should count the words in a string with default pattern for null and undefined', function() {
expect(as.countWords('gravity_can_cross_dimensions', null)).to.equal(4);
expect(as.countWords('gravity_can_cross_dimensions', undefined)).to.equal(4);
});
});