UNPKG

dist-javascript-algorithms-and-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

34 lines (31 loc) 2.42 kB
"use strict"; 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); }); });