gitea

Development moved to Codeberg

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
import {describe, expect, test} from 'vitest';
import {strSubMatch, calcMatchedWeight, filterRepoFilesWeighted} from './repo-findfile.js';

describe('Repo Find Files', () => {
  test('strSubMatch', () => {
    expect(strSubMatch('abc', '')).toEqual(['abc']);
    expect(strSubMatch('abc', 'a')).toEqual(['', 'a', 'bc']);
    expect(strSubMatch('abc', 'b')).toEqual(['a', 'b', 'c']);
    expect(strSubMatch('abc', 'c')).toEqual(['ab', 'c']);
    expect(strSubMatch('abc', 'ac')).toEqual(['', 'a', 'b', 'c']);
    expect(strSubMatch('abc', 'z')).toEqual(['abc']);
    expect(strSubMatch('abc', 'az')).toEqual(['abc']);

    expect(strSubMatch('ABc', 'ac')).toEqual(['', 'A', 'B', 'c']);
    expect(strSubMatch('abC', 'ac')).toEqual(['', 'a', 'b', 'C']);

    expect(strSubMatch('aabbcc', 'abc')).toEqual(['', 'a', 'a', 'b', 'b', 'c', 'c']);
    expect(strSubMatch('the/directory', 'hedir')).toEqual(['t', 'he', '/', 'dir', 'ectory']);
  });

  test('calcMatchedWeight', () => {
    expect(calcMatchedWeight(['a', 'b', 'c', 'd']) < calcMatchedWeight(['a', 'bc', 'c'])).toBeTruthy();
  });

  test('filterRepoFilesWeighted', () => {
    // the first matched result should always be the "word.txt"
    let res = filterRepoFilesWeighted(['word.txt', 'we-got-result.dat'], 'word');
    expect(res).toHaveLength(2);
    expect(res[0].matchResult).toEqual(['', 'word', '.txt']);

    res = filterRepoFilesWeighted(['we-got-result.dat', 'word.txt'], 'word');
    expect(res).toHaveLength(2);
    expect(res[0].matchResult).toEqual(['', 'word', '.txt']);
  });
});