awesome-string
Version:
The ultimate JavaScript string library
41 lines (35 loc) • 1.65 kB
JavaScript
import as from '../awesome-string';
import { expect } from 'chai';
import { PRINTABLE_ASCII } from '../const';
describe('countGraphemes', function() {
it('should return the number of characters in a string', function() {
expect(as.countGraphemes('rain')).to.be.equal(4);
expect(as.countGraphemes('')).to.be.equal(0);
expect(as.countGraphemes('rainbow')).to.be.equal(7);
expect(as.countGraphemes('\u00E9\u20DD')).to.be.equal(1);
expect(as.countGraphemes('\uD835\uDC00\uD835\uDC01')).to.be.equal(2);
expect(as.countGraphemes('man\u0303ana')).to.be.equal(6);
expect(as.countGraphemes('cafe\u0301')).to.be.equal(4);
expect(as.countGraphemes('foo\u0303\u035C\u035D\u035Ebar')).to.be.equal(6);
expect(as.countGraphemes('foo\uD834\uDF06\u0303\u035C\u035D\u035Ebar')).to.be.equal(7);
expect(as.countGraphemes(PRINTABLE_ASCII)).to.be.equal(PRINTABLE_ASCII.length);
});
it('should return the number of characters in a number', function() {
expect(as.countGraphemes(123)).to.be.equal(3);
expect(as.countGraphemes(0)).to.be.equal(1);
expect(as.countGraphemes(-1.5)).to.be.equal(4);
});
it('should return the number of characters in a string representation of an object', function() {
expect(as.countGraphemes(['droplet'])).to.be.equal(7);
expect(as.countGraphemes({
toString: function() {
return 'rainfall';
}
})).to.be.equal(8);
});
it('should return zero for undefined or null', function() {
expect(as.countGraphemes()).to.be.equal(0);
expect(as.countGraphemes(null)).to.be.equal(0);
expect(as.countGraphemes(undefined)).to.be.equal(0);
});
});