tests: Port GNOMEversionCompare() test to jasmine
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3164>
This commit is contained in:
parent
41aa44707a
commit
162c9f0056
@ -28,6 +28,7 @@ unit_tests = [
|
|||||||
'params',
|
'params',
|
||||||
'signalTracker',
|
'signalTracker',
|
||||||
'url',
|
'url',
|
||||||
|
'versionCompare',
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach test : unit_tests
|
foreach test : unit_tests
|
||||||
@ -45,18 +46,6 @@ foreach test : unit_tests
|
|||||||
workdir: meson.current_source_dir())
|
workdir: meson.current_source_dir())
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
legacy_tests = [
|
|
||||||
'versionCompare',
|
|
||||||
]
|
|
||||||
|
|
||||||
foreach test : legacy_tests
|
|
||||||
test(test, run_test,
|
|
||||||
args: 'unit/@0@.js'.format(test),
|
|
||||||
suite: 'unit',
|
|
||||||
env: unit_testenv,
|
|
||||||
workdir: meson.current_source_dir())
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
shell_tests = [
|
shell_tests = [
|
||||||
{
|
{
|
||||||
'name': 'basic',
|
'name': 'basic',
|
||||||
|
@ -1,73 +1,54 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
// Test cases for version comparison
|
// Test cases for version comparison
|
||||||
|
|
||||||
const JsUnit = imports.jsUnit;
|
|
||||||
|
|
||||||
import 'resource:///org/gnome/shell/ui/environment.js';
|
import 'resource:///org/gnome/shell/ui/environment.js';
|
||||||
|
import {GNOMEversionCompare} from 'resource:///org/gnome/shell/misc/util.js';
|
||||||
|
|
||||||
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
|
describe('GNOMEversionCompare()', () => {
|
||||||
|
it('compares matching versions', () => {
|
||||||
|
expect(GNOMEversionCompare('40', '40')).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
const tests = [
|
it('compares older versions', () => {
|
||||||
{
|
expect(GNOMEversionCompare('40', '42')).toBeLessThan(0);
|
||||||
v1: '40',
|
expect(GNOMEversionCompare('40.0', '40.1')).toBeLessThan(0);
|
||||||
v2: '40',
|
});
|
||||||
res: 0,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40',
|
|
||||||
v2: '42',
|
|
||||||
res: -1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '42',
|
|
||||||
v2: '40',
|
|
||||||
res: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '3.38.0',
|
|
||||||
v2: '40',
|
|
||||||
res: -1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40',
|
|
||||||
v2: '3.38.0',
|
|
||||||
res: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40',
|
|
||||||
v2: '40.rc',
|
|
||||||
res: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40.alpha.1.1',
|
|
||||||
v2: '40',
|
|
||||||
res: -1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40',
|
|
||||||
v2: '40.alpha.1.1',
|
|
||||||
res: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40.beta',
|
|
||||||
v2: '40',
|
|
||||||
res: -1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '40.1',
|
|
||||||
v2: '40',
|
|
||||||
res: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
v1: '',
|
|
||||||
v2: '40.alpha',
|
|
||||||
res: -1,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
for (let i = 0; i < tests.length; i++) {
|
it('compares newer versions', () => {
|
||||||
const name = `Test #${i} v1: ${tests[i].v1}, v2: ${tests[i].v2}`;
|
expect(GNOMEversionCompare('42', '40')).toBeGreaterThan(0);
|
||||||
print(name);
|
expect(GNOMEversionCompare('40.1', '40.0')).toBeGreaterThan(0);
|
||||||
JsUnit.assertEquals(name, Util.GNOMEversionCompare(tests[i].v1, tests[i].v2), tests[i].res);
|
});
|
||||||
}
|
|
||||||
|
it('compares legacy versions', () => {
|
||||||
|
expect(GNOMEversionCompare('3.38.0', '40')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40', '3.38.0')).toBeGreaterThan(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('compares pre-release versions', () => {
|
||||||
|
expect(GNOMEversionCompare('40.beta', '40')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.alpha', '40')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.rc', '40')).toBeLessThan(0);
|
||||||
|
|
||||||
|
expect(GNOMEversionCompare('40', '40.beta')).toBeGreaterThan(0);
|
||||||
|
expect(GNOMEversionCompare('40', '40.alpha')).toBeGreaterThan(0);
|
||||||
|
expect(GNOMEversionCompare('40', '40.rc')).toBeGreaterThan(0);
|
||||||
|
|
||||||
|
expect(GNOMEversionCompare('40.alpha', '40.beta')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.beta', '40.rc')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.rc', '40.0')).toBeLessThan(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('compares point-release versions', () => {
|
||||||
|
expect(GNOMEversionCompare('40.1', '40')).toBeGreaterThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.alpha.1', '40.alpha')).toBeGreaterThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.beta.1.1', '40.beta.1')).toBeGreaterThan(0);
|
||||||
|
|
||||||
|
expect(GNOMEversionCompare('40', '40.1')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.alpha', '40.alpha.1')).toBeLessThan(0);
|
||||||
|
expect(GNOMEversionCompare('40.beta.1', '40.beta.1.1')).toBeLessThan(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('compares empty versions', () => {
|
||||||
|
expect(GNOMEversionCompare('', '40')).toBeLessThan(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user