advanced-search-query
Version:
Another parser for advanced search query syntax.
59 lines • 2.49 kB
JavaScript
import { getQuotePairMap } from '../src/utils';
describe('utils', () => {
describe('getQuotePairMap', () => {
const emptyQuotePairMap = { single: {}, double: {} };
test('empty', () => {
expect(getQuotePairMap()).toEqual(emptyQuotePairMap);
expect(getQuotePairMap('')).toEqual(emptyQuotePairMap);
expect(getQuotePairMap(' ')).toEqual(emptyQuotePairMap);
expect(getQuotePairMap(null)).toEqual(emptyQuotePairMap);
expect(getQuotePairMap(undefined)).toEqual(emptyQuotePairMap);
});
test('simple pairs', () => {
const singleStr = "This is 'quoted and' this is not";
const doubleStr = 'This is "quoted and" this is not';
const locations = { 8: true, 19: true };
expect(getQuotePairMap(singleStr)).toEqual({
single: locations,
double: {},
});
expect(getQuotePairMap(doubleStr)).toEqual({
single: {},
double: locations,
});
});
test('two pairs', () => {
const singleStr = "This 'is' 'quoted and' this is not";
const doubleStr = 'This "is" "quoted and" this is not';
const locations = { 5: true, 8: true, 10: true, 21: true };
expect(getQuotePairMap(singleStr)).toEqual({
single: locations,
double: {},
});
expect(getQuotePairMap(doubleStr)).toEqual({
single: {},
double: locations,
});
});
test('simple no pairs', () => {
const singleStr = "This is quoted and' this is not";
const doubleStr = 'This is quoted and" this is not';
expect(getQuotePairMap(singleStr)).toEqual(emptyQuotePairMap);
expect(getQuotePairMap(doubleStr)).toEqual(emptyQuotePairMap);
});
test('intermixed', () => {
const singleStr = "This 'is \"'quoted and' this is not";
const doubleStr = 'This "is \'"quoted and" this is not';
const locations = { 5: true, 10: true };
expect(getQuotePairMap(singleStr)).toEqual({
single: locations,
double: {},
});
expect(getQuotePairMap(doubleStr)).toEqual({
single: {},
double: locations,
});
});
});
});
//# sourceMappingURL=utils.test.js.map