UNPKG

@technobuddha/library

Version:
47 lines (39 loc) 1.96 kB
import { compareStrings } from './compare-strings.ts'; describe('compareStrings', () => { test('should compare strings', () => { expect(compareStrings('a', 'a')).toBe(0); expect(compareStrings('a', 'b')).toBe(-1); expect(compareStrings('b', 'a')).toBe(1); }); test('should compare null', () => { expect(compareStrings(null, null)).toBe(0); expect(compareStrings(null, 'a')).toBe(-1); expect(compareStrings('a', null)).toBe(1); }); test('should do case insensitive compares', () => { expect(compareStrings('A', 'a', { caseInsensitive: true })).toBe(0); expect(compareStrings('A', 'b', { caseInsensitive: true })).toBe(-1); expect(compareStrings('a', 'B', { caseInsensitive: true })).toBe(-1); }); test('should do natural compares', () => { expect(compareStrings('Page 2', 'Page 2', { natural: true })).toBe(0); expect(compareStrings('Page 2', 'Page 10', { natural: true })).toBe(-1); expect(compareStrings('Page 10', 'Page 2', { natural: true })).toBe(1); }); test('should do natural compares w/o numbers', () => { expect(compareStrings('a', 'a', { natural: true })).toBe(0); expect(compareStrings('a', 'b', { natural: true })).toBe(-1); expect(compareStrings('b', 'a', { natural: true })).toBe(1); expect(compareStrings('', 'a', { natural: true })).toBe(-1); expect(compareStrings('a', '', { natural: true })).toBe(1); }); test('should compare versions', () => { expect(compareStrings('1.1', '1.1', { version: true })).toBe(0); expect(compareStrings('1.1', '1.2', { version: true })).toBe(-1); expect(compareStrings('1', '1.1', { version: true })).toBe(-1); expect(compareStrings('1.1', '1.1a', { version: true })).toBe(-1); expect(compareStrings('1.1.1.1', '1.1.1a', { version: true })).toBe(-1); expect(compareStrings('1-1', '1-1', { version: true })).toBe(0); expect(compareStrings('1-1', '1.1', { version: true })).toBe(0); }); });