@technobuddha/library
Version:
A large library of useful functions
47 lines (39 loc) • 1.96 kB
text/typescript
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);
});
});