addons/isl-server/src/__tests__/versionNumbers.test.tsblame
View source
b69ab311/**
b69ab312 * Copyright (c) Meta Platforms, Inc. and affiliates.
b69ab313 *
b69ab314 * This source code is licensed under the MIT license found in the
b69ab315 * LICENSE file in the root directory of this source tree.
b69ab316 */
b69ab317
b69ab318import {compareVersions, parseVersionParts} from '../versionNumbers';
b69ab319
b69ab3110describe('version numbers', () => {
b69ab3111 describe('parseVersionParts', () => {
b69ab3112 it('parses version parts', () => {
b69ab3113 expect(parseVersionParts('1.2.3')).toEqual([1, 2, 3]);
b69ab3114 expect(parseVersionParts('1.2')).toEqual([1, 2]);
b69ab3115 expect(parseVersionParts('V0.10')).toEqual([0, 10]);
b69ab3116 });
b69ab3117
b69ab3118 it('ignores extra non-numerics', () => {
b69ab3119 expect(parseVersionParts('V1')).toEqual([1]);
b69ab3120 expect(parseVersionParts('V1.1-alpha')).toEqual([1, 1]);
b69ab3121 });
b69ab3122 });
b69ab3123
b69ab3124 describe('compareVersions', () => {
b69ab3125 it('compares version parts', () => {
b69ab3126 expect(compareVersions(parseVersionParts('1.2'), parseVersionParts('1.3'))).toEqual(-1);
b69ab3127 expect(compareVersions(parseVersionParts('1.3'), parseVersionParts('1.2'))).toEqual(1);
b69ab3128 expect(compareVersions(parseVersionParts('1.2'), parseVersionParts('1.2'))).toEqual(0);
b69ab3129 });
b69ab3130
b69ab3131 it('compares in order', () => {
b69ab3132 expect(compareVersions(parseVersionParts('3.0.0'), parseVersionParts('2.99.999'))).toEqual(1);
b69ab3133 expect(compareVersions(parseVersionParts('3.2.0'), parseVersionParts('3.1.999'))).toEqual(1);
b69ab3134 });
b69ab3135
b69ab3136 it('uses integer comparison', () => {
b69ab3137 expect(compareVersions(parseVersionParts('1.10'), parseVersionParts('1.2'))).toEqual(1);
b69ab3138 });
b69ab3139
b69ab3140 it('handles different lengths', () => {
b69ab3141 expect(compareVersions(parseVersionParts('1.3.1'), parseVersionParts('1.3'))).toEqual(1);
b69ab3142 expect(compareVersions(parseVersionParts('1.2.1'), parseVersionParts('1.3'))).toEqual(-1);
b69ab3143 });
b69ab3144
b69ab3145 it('1 is less than 1.0', () => {
b69ab3146 expect(compareVersions(parseVersionParts('3'), parseVersionParts('3.0'))).toEqual(-1);
b69ab3147 });
b69ab3148
b69ab3149 it("extra non-numerics don't affect it", () => {
b69ab3150 expect(compareVersions(parseVersionParts('v3.1-alpha'), parseVersionParts('3.0'))).toEqual(1);
b69ab3151 expect(compareVersions(parseVersionParts('v3.1-alpha'), parseVersionParts('3.1'))).toEqual(0);
b69ab3152 });
b69ab3153 });
b69ab3154});