| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { describe, it, expect } from 'vitest';
- import { compareFwVersions } from '../../utils/firmwareVersion';
- describe('compareFwVersions', () => {
- it('returns 0 for equal versions', () => {
- expect(compareFwVersions('01.02.03.04', '01.02.03.04')).toBe(0);
- });
- it('returns positive when left is newer (major)', () => {
- expect(compareFwVersions('02.00.00.00', '01.99.99.99')).toBeGreaterThan(0);
- });
- it('returns negative when left is older (minor)', () => {
- expect(compareFwVersions('01.02.03.04', '01.03.00.00')).toBeLessThan(0);
- });
- it('compares patch segments', () => {
- expect(compareFwVersions('01.02.10.00', '01.02.02.00')).toBeGreaterThan(0);
- });
- it('compares build segments', () => {
- expect(compareFwVersions('01.02.03.05', '01.02.03.04')).toBeGreaterThan(0);
- });
- it('treats missing trailing segments as 0', () => {
- expect(compareFwVersions('01.02.03', '01.02.03.00')).toBe(0);
- expect(compareFwVersions('01.02', '01.02.00.00')).toBe(0);
- });
- it('sorts a list newest-first via descending sort', () => {
- const versions = ['01.02.02.00', '01.03.00.00', '01.02.10.00'];
- versions.sort((a, b) => compareFwVersions(b, a));
- expect(versions).toEqual(['01.03.00.00', '01.02.10.00', '01.02.02.00']);
- });
- it('handles the issue #568 ordering correctly', () => {
- // From the issue: current 01.00.05.00 with 01.01.00.00, 01.01.01.00, 01.01.03.00 available.
- expect(compareFwVersions('01.01.00.00', '01.00.05.00')).toBeGreaterThan(0);
- expect(compareFwVersions('01.01.03.00', '01.01.01.00')).toBeGreaterThan(0);
- });
- });
|