animate/webGl/my-threejs-test/node_modules/@parcel/profiler/test/Tracer.test.js

79 lines
2.0 KiB
JavaScript

import {tracer, PluginTracer} from '../src/Tracer';
import sinon from 'sinon';
import assert from 'assert';
describe('Tracer', () => {
let onTrace;
let traceDisposable;
beforeEach(() => {
onTrace = sinon.spy();
traceDisposable = tracer.onTrace(onTrace);
tracer.enable();
});
afterEach(() => {
traceDisposable.dispose();
});
it('returns no measurement when disabled', () => {
tracer.disable();
const measurement = tracer.createMeasurement('test');
assert(measurement == null);
assert(onTrace.notCalled);
});
it('emits a basic trace event', () => {
const measurement = tracer.createMeasurement('test');
measurement.end();
sinon.assert.calledWith(
onTrace,
sinon.match({
type: 'trace',
name: 'test',
args: undefined,
duration: sinon.match.number,
}),
);
});
it('emits a complex trace event', () => {
const measurement = tracer.createMeasurement('test', 'myPlugin', 'aaargh', {
extra: 'data',
});
measurement.end();
sinon.assert.calledWith(
onTrace,
sinon.match({
type: 'trace',
name: 'test',
categories: ['myPlugin'],
args: {extra: 'data', name: 'aaargh'},
duration: sinon.match.number,
}),
);
});
it('calling end twice on measurment should be a no-op', () => {
const measurement = tracer.createMeasurement('test');
measurement.end();
measurement.end();
sinon.assert.calledOnce(onTrace);
});
describe('PluginTracer', () => {
it('emits events with proper origin/category', () => {
const pluginTracer = new PluginTracer({
origin: 'origin',
category: 'cat',
});
const measurement = pluginTracer.createMeasurement('test', 'customCat');
measurement.end();
sinon.assert.calledWith(
onTrace,
sinon.match({
type: 'trace',
name: 'test',
categories: ['cat:origin:customCat'],
duration: sinon.match.number,
}),
);
});
});
});