dist-javascript-algorithms-and-data-structures
Version:
Algorithms and data-structures implemented on JavaScript
34 lines (31 loc) • 2.42 kB
JavaScript
;
var _rabinKarp = _interopRequireDefault(require("../rabinKarp"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('rabinKarp', () => {
it('should find substring in a string', () => {
expect((0, _rabinKarp.default)('', '')).toBe(0);
expect((0, _rabinKarp.default)('a', '')).toBe(0);
expect((0, _rabinKarp.default)('a', 'a')).toBe(0);
expect((0, _rabinKarp.default)('ab', 'b')).toBe(1);
expect((0, _rabinKarp.default)('abcbcglx', 'abca')).toBe(-1);
expect((0, _rabinKarp.default)('abcbcglx', 'bcgl')).toBe(3);
expect((0, _rabinKarp.default)('abcxabcdabxabcdabcdabcy', 'abcdabcy')).toBe(15);
expect((0, _rabinKarp.default)('abcxabcdabxabcdabcdabcy', 'abcdabca')).toBe(-1);
expect((0, _rabinKarp.default)('abcxabcdabxaabcdabcabcdabcdabcy', 'abcdabca')).toBe(12);
expect((0, _rabinKarp.default)('abcxabcdabxaabaabaaaabcdabcdabcy', 'aabaabaaa')).toBe(11);
expect((0, _rabinKarp.default)('^ !/\'#\'pp', ' !/\'#\'pp')).toBe(1);
});
it('should work with bigger texts', () => {
const text = 'Lorem Ipsum is simply dummy text of the printing and ' + 'typesetting industry. Lorem Ipsum has been the industry\'s standard ' + 'dummy text ever since the 1500s, when an unknown printer took a ' + 'galley of type and scrambled it to make a type specimen book. It ' + 'has survived not only five centuries, but also the leap into ' + 'electronic typesetting, remaining essentially unchanged. It was ' + 'popularised in the 1960s with the release of Letraset sheets ' + 'containing Lorem Ipsum passages, and more recently with desktop' + 'publishing software like Aldus PageMaker including versions of Lorem ' + 'Ipsum.';
expect((0, _rabinKarp.default)(text, 'Lorem')).toBe(0);
expect((0, _rabinKarp.default)(text, 'versions')).toBe(549);
expect((0, _rabinKarp.default)(text, 'versions of Lorem Ipsum.')).toBe(549);
expect((0, _rabinKarp.default)(text, 'versions of Lorem Ipsum:')).toBe(-1);
expect((0, _rabinKarp.default)(text, 'Lorem Ipsum passages, and more recently with')).toBe(446);
});
it('should work with UTF symbols', () => {
expect((0, _rabinKarp.default)('a\u{ffff}', '\u{ffff}')).toBe(1);
expect((0, _rabinKarp.default)('\u0000耀\u0000', '耀\u0000')).toBe(1); // @TODO: Provide Unicode support.
// expect(rabinKarp('a\u{20000}', '\u{20000}')).toBe(1);
});
});