firmwareVersion.test.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { describe, it, expect } from 'vitest';
  2. import { compareFwVersions } from '../../utils/firmwareVersion';
  3. describe('compareFwVersions', () => {
  4. it('returns 0 for equal versions', () => {
  5. expect(compareFwVersions('01.02.03.04', '01.02.03.04')).toBe(0);
  6. });
  7. it('returns positive when left is newer (major)', () => {
  8. expect(compareFwVersions('02.00.00.00', '01.99.99.99')).toBeGreaterThan(0);
  9. });
  10. it('returns negative when left is older (minor)', () => {
  11. expect(compareFwVersions('01.02.03.04', '01.03.00.00')).toBeLessThan(0);
  12. });
  13. it('compares patch segments', () => {
  14. expect(compareFwVersions('01.02.10.00', '01.02.02.00')).toBeGreaterThan(0);
  15. });
  16. it('compares build segments', () => {
  17. expect(compareFwVersions('01.02.03.05', '01.02.03.04')).toBeGreaterThan(0);
  18. });
  19. it('treats missing trailing segments as 0', () => {
  20. expect(compareFwVersions('01.02.03', '01.02.03.00')).toBe(0);
  21. expect(compareFwVersions('01.02', '01.02.00.00')).toBe(0);
  22. });
  23. it('sorts a list newest-first via descending sort', () => {
  24. const versions = ['01.02.02.00', '01.03.00.00', '01.02.10.00'];
  25. versions.sort((a, b) => compareFwVersions(b, a));
  26. expect(versions).toEqual(['01.03.00.00', '01.02.10.00', '01.02.02.00']);
  27. });
  28. it('handles the issue #568 ordering correctly', () => {
  29. // From the issue: current 01.00.05.00 with 01.01.00.00, 01.01.01.00, 01.01.03.00 available.
  30. expect(compareFwVersions('01.01.00.00', '01.00.05.00')).toBeGreaterThan(0);
  31. expect(compareFwVersions('01.01.03.00', '01.01.01.00')).toBeGreaterThan(0);
  32. });
  33. });