2.1 KB55 lines
Blame
1/**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8import {compareVersions, parseVersionParts} from '../versionNumbers';
9
10describe('version numbers', () => {
11 describe('parseVersionParts', () => {
12 it('parses version parts', () => {
13 expect(parseVersionParts('1.2.3')).toEqual([1, 2, 3]);
14 expect(parseVersionParts('1.2')).toEqual([1, 2]);
15 expect(parseVersionParts('V0.10')).toEqual([0, 10]);
16 });
17
18 it('ignores extra non-numerics', () => {
19 expect(parseVersionParts('V1')).toEqual([1]);
20 expect(parseVersionParts('V1.1-alpha')).toEqual([1, 1]);
21 });
22 });
23
24 describe('compareVersions', () => {
25 it('compares version parts', () => {
26 expect(compareVersions(parseVersionParts('1.2'), parseVersionParts('1.3'))).toEqual(-1);
27 expect(compareVersions(parseVersionParts('1.3'), parseVersionParts('1.2'))).toEqual(1);
28 expect(compareVersions(parseVersionParts('1.2'), parseVersionParts('1.2'))).toEqual(0);
29 });
30
31 it('compares in order', () => {
32 expect(compareVersions(parseVersionParts('3.0.0'), parseVersionParts('2.99.999'))).toEqual(1);
33 expect(compareVersions(parseVersionParts('3.2.0'), parseVersionParts('3.1.999'))).toEqual(1);
34 });
35
36 it('uses integer comparison', () => {
37 expect(compareVersions(parseVersionParts('1.10'), parseVersionParts('1.2'))).toEqual(1);
38 });
39
40 it('handles different lengths', () => {
41 expect(compareVersions(parseVersionParts('1.3.1'), parseVersionParts('1.3'))).toEqual(1);
42 expect(compareVersions(parseVersionParts('1.2.1'), parseVersionParts('1.3'))).toEqual(-1);
43 });
44
45 it('1 is less than 1.0', () => {
46 expect(compareVersions(parseVersionParts('3'), parseVersionParts('3.0'))).toEqual(-1);
47 });
48
49 it("extra non-numerics don't affect it", () => {
50 expect(compareVersions(parseVersionParts('v3.1-alpha'), parseVersionParts('3.0'))).toEqual(1);
51 expect(compareVersions(parseVersionParts('v3.1-alpha'), parseVersionParts('3.1'))).toEqual(0);
52 });
53 });
54});
55