90 lines
2.3 KiB
TypeScript
90 lines
2.3 KiB
TypeScript
/**
|
|
* Copyright (c) 2020 The xterm.js authors. All rights reserved.
|
|
* @license MIT
|
|
*/
|
|
|
|
import { assert } from 'chai';
|
|
import { IBufferService } from 'common/services/Services';
|
|
import { Linkifier } from './Linkifier';
|
|
import { MockBufferService } from 'common/TestUtils.test';
|
|
import { ILink } from 'browser/Types';
|
|
import { LinkProviderService } from 'browser/services/LinkProviderService';
|
|
import jsdom = require('jsdom');
|
|
|
|
class TestLinkifier2 extends Linkifier {
|
|
public set currentLink(link: any) {
|
|
this._currentLink = link;
|
|
}
|
|
|
|
public linkHover(element: HTMLElement, link: ILink, event: MouseEvent): void {
|
|
this._linkHover(element, link, event);
|
|
}
|
|
|
|
public linkLeave(element: HTMLElement, link: ILink, event: MouseEvent): void {
|
|
this._linkLeave(element, link, event);
|
|
}
|
|
}
|
|
|
|
describe('Linkifier2', () => {
|
|
let bufferService: IBufferService;
|
|
let linkifier: TestLinkifier2;
|
|
|
|
const link: ILink = {
|
|
text: 'foo',
|
|
range: {
|
|
start: {
|
|
x: 5,
|
|
y: 1
|
|
},
|
|
end: {
|
|
x: 7,
|
|
y: 1
|
|
}
|
|
},
|
|
activate: () => { }
|
|
};
|
|
|
|
beforeEach(() => {
|
|
const dom = new jsdom.JSDOM();
|
|
bufferService = new MockBufferService(100, 10);
|
|
linkifier = new TestLinkifier2(dom.window.document.createElement('div'), null!, null!, bufferService, new LinkProviderService());
|
|
linkifier.currentLink = {
|
|
link,
|
|
state: {
|
|
decorations: {
|
|
underline: true,
|
|
pointerCursor: true
|
|
},
|
|
isHovered: true
|
|
}
|
|
};
|
|
});
|
|
|
|
it('onShowLinkUnderline event range is correct', done => {
|
|
linkifier.onShowLinkUnderline(e => {
|
|
assert.equal(link.range.start.x - 1, e.x1);
|
|
assert.equal(link.range.start.y - 1, e.y1);
|
|
assert.equal(link.range.end.x, e.x2);
|
|
assert.equal(link.range.end.y - 1, e.y2);
|
|
|
|
done();
|
|
});
|
|
|
|
linkifier.linkHover({ classList: { add: () => { } } } as any, link, {} as any);
|
|
});
|
|
|
|
it('onHideLinkUnderline event range is correct', done => {
|
|
linkifier.onHideLinkUnderline(e => {
|
|
assert.equal(link.range.start.x - 1, e.x1);
|
|
assert.equal(link.range.start.y - 1, e.y1);
|
|
assert.equal(link.range.end.x, e.x2);
|
|
assert.equal(link.range.end.y - 1, e.y2);
|
|
|
|
done();
|
|
});
|
|
|
|
linkifier.linkLeave({ classList: { add: () => { } } } as any, link, {} as any);
|
|
});
|
|
|
|
});
|