angular/packages/compiler-cli/test/version_helpers_spec.ts
JoostK 604636e70a refactor(compiler-cli): move version number helpers out of diagnostics subfolder (#44269)
As a preparation for the removal of the ViewEngine parts in
`compiler-cli`, this commit moves the version number helper functions
up one level such that the whole `diagnostics` subfolder can be removed.

PR Close #44269
2021-12-01 10:36:30 -08:00

71 lines
2.3 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {compareNumbers, compareVersions, isVersionBetween, toNumbers} from '../src/version_helpers';
describe('toNumbers', () => {
it('should handle strings', () => {
expect(toNumbers('2')).toEqual([2]);
expect(toNumbers('2.1')).toEqual([2, 1]);
expect(toNumbers('2.0.1')).toEqual([2, 0, 1]);
});
});
describe('compareNumbers', () => {
it('should handle empty arrays', () => {
expect(compareNumbers([], [])).toEqual(0);
});
it('should handle arrays of same length', () => {
expect(compareNumbers([1], [3])).toEqual(-1);
expect(compareNumbers([3], [1])).toEqual(1);
expect(compareNumbers([1, 0], [1, 0])).toEqual(0);
expect(compareNumbers([1, 1], [1, 0])).toEqual(1);
expect(compareNumbers([1, 0], [1, 1])).toEqual(-1);
expect(compareNumbers([1, 0, 9], [1, 1, 0])).toEqual(-1);
expect(compareNumbers([1, 1, 0], [1, 0, 9])).toEqual(1);
});
it('should handle arrays of different length', () => {
expect(compareNumbers([2], [2, 1])).toEqual(-1);
expect(compareNumbers([2, 1], [2])).toEqual(1);
expect(compareNumbers([0, 9], [1])).toEqual(-1);
expect(compareNumbers([1], [0, 9])).toEqual(1);
expect(compareNumbers([2], [])).toEqual(1);
expect(compareNumbers([], [2])).toEqual(-1);
expect(compareNumbers([1, 0], [1, 0, 0, 0])).toEqual(0);
});
});
describe('isVersionBetween', () => {
it('should correctly check if a typescript version is within a given range', () => {
expect(isVersionBetween('2.7.0', '2.40')).toEqual(false);
expect(isVersionBetween('2.40', '2.7.0')).toEqual(true);
expect(isVersionBetween('2.7.2', '2.7.0', '2.8.0')).toEqual(true);
expect(isVersionBetween('2.7.2', '2.7.7', '2.8.0')).toEqual(false);
});
});
describe('compareVersions', () => {
it('should correctly compare versions', () => {
expect(compareVersions('2.7.0', '2.40')).toEqual(-1);
expect(compareVersions('2.40', '2.7.0')).toEqual(1);
expect(compareVersions('2.40', '2.40')).toEqual(0);
expect(compareVersions('2.40', '2.41')).toEqual(-1);
expect(compareVersions('2', '2.1')).toEqual(-1);
});
});