angular-cn/tools/size-tracking/file_size_compare_spec.ts
Joey Perrott d1ea1f4c7f build: update license headers to reference Google LLC ()
Update the license headers throughout the repository to reference Google LLC
rather than Google Inc, for the required license headers.

PR Close 
2020-05-26 14:26:58 -04:00

128 lines
3.5 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 {compareFileSizeData} from './file_size_compare';
describe('file size compare', () => {
it('should report if size entry differ by more than the specified max percentage diff', () => {
const diffs = compareFileSizeData(
{
unmapped: 0,
files: {
size: 50,
'a.ts': 50,
}
},
{
unmapped: 0,
files: {
size: 75,
'a.ts': 75,
}
},
{maxPercentageDiff: 0, maxByteDiff: 25});
expect(diffs.length).toBe(2);
expect(diffs[0].filePath).toBe('/');
expect(diffs[0].message).toMatch(/40.00% from the expected size/);
expect(diffs[1].filePath).toBe('/a.ts');
expect(diffs[1].message).toMatch(/40.00% from the expected size/);
});
it('should report if size entry differ by more than the specified max byte diff', () => {
const diffs = compareFileSizeData(
{
unmapped: 0,
files: {
size: 1000,
'a.ts': 1000,
}
},
{
unmapped: 0,
files: {
size: 1055,
'a.ts': 1055,
}
},
{maxPercentageDiff: 6, maxByteDiff: 50});
expect(diffs.length).toBe(2);
expect(diffs[0].filePath).toBe('/');
expect(diffs[0].message).toMatch(/55B from the expected size/);
expect(diffs[1].filePath).toBe('/a.ts');
expect(diffs[1].message).toMatch(/55B from the expected size/);
});
it('should report if unmapped bytes differ by more than specified threshold', () => {
const diffs = compareFileSizeData(
{unmapped: 1000, files: {size: 0}}, {unmapped: 1055, files: {size: 0}},
{maxPercentageDiff: 6, maxByteDiff: 50});
expect(diffs.length).toBe(1);
expect(diffs[0].filePath).toBe('<unmapped>');
expect(diffs[0].message).toMatch(/55B from the expected size/);
});
it('should not report if size percentage difference does not exceed threshold', () => {
const diffs = compareFileSizeData(
{
unmapped: 0,
files: {
size: 50,
'a.ts': 50,
}
},
{
unmapped: 0,
files: {
size: 75,
'a.ts': 75,
}
},
{maxPercentageDiff: 40, maxByteDiff: 25});
expect(diffs.length).toBe(0);
});
it('should report if expected file size data misses a file size entry', () => {
const diffs = compareFileSizeData(
{
unmapped: 0,
files: {
size: 101,
'a.ts': 100,
'b.ts': 1,
}
},
{unmapped: 0, files: {size: 100, 'a.ts': 100}}, {maxByteDiff: 10, maxPercentageDiff: 1});
expect(diffs.length).toBe(1);
expect(diffs[0].filePath).toBe('/b.ts');
expect(diffs[0].message).toMatch(/Unexpected file.*not part of golden./);
});
it('should report if actual file size data misses an expected file size entry', () => {
const diffs = compareFileSizeData(
{
unmapped: 0,
files: {
size: 100,
'a.ts': 100,
}
},
{unmapped: 0, files: {size: 101, 'a.ts': 100, 'b.ts': 1}},
{maxByteDiff: 10, maxPercentageDiff: 1});
expect(diffs.length).toBe(1);
expect(diffs[0].filePath).toBe('/b.ts');
expect(diffs[0].message).toMatch(/Expected file.*not included./);
});
});