// Copyright (C) 2022 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import {escapeGlob, escapeQuery, escapeSearchQuery} from './query_utils';

test('escapeQuery', () => {
  expect(escapeQuery(``)).toEqual(`''`);
  expect(escapeQuery(`'`)).toEqual(`''''`);
  expect(escapeQuery(`hello`)).toEqual(`'hello'`);
  expect(escapeQuery("foo'bar")).toEqual(`'foo''bar'`);
  expect(escapeQuery('*_*')).toEqual(`'[*]_[*]'`);
  expect(escapeQuery('[]?')).toEqual(`'[[]][?]'`);
});

test('escapeSearchQuery', () => {
  expect(escapeSearchQuery(``)).toEqual(`'**'`);
  expect(escapeSearchQuery(`hello`)).toEqual(`'*[hH][eE][lL][lL][oO]*'`);
  expect(escapeSearchQuery("a'b")).toEqual(`'*[aA]''[bB]*'`);
  expect(escapeSearchQuery('*_*')).toEqual(`'*[*]_[*]*'`);
  expect(escapeSearchQuery('[]?')).toEqual(`'*[[]][?]*'`);
});

test('escapeGlob', () => {
  expect(escapeGlob(``)).toEqual(`'**'`);
  expect(escapeGlob(`'`)).toEqual(`'*''*'`);
  expect(escapeGlob(`hello`)).toEqual(`'*hello*'`);
  expect(escapeGlob("foo'bar")).toEqual(`'*foo''bar*'`);
  expect(escapeGlob('*_*')).toEqual(`'**_**'`);
  expect(escapeGlob('[]?')).toEqual(`'*[]?*'`);
});
