From e817a7b6c60486ae63ac1e816ed13d95678cfc2e Mon Sep 17 00:00:00 2001 From: Jon Bockhorst Date: Thu, 13 Feb 2020 00:43:24 -0600 Subject: [PATCH] Add Linkifier2 tests --- src/browser/Linkifier2.test.ts | 76 ++++++++++++++++++++++++++++++++++ src/browser/Linkifier2.ts | 6 +-- 2 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/browser/Linkifier2.test.ts diff --git a/src/browser/Linkifier2.test.ts b/src/browser/Linkifier2.test.ts new file mode 100644 index 000000000..bcf068a84 --- /dev/null +++ b/src/browser/Linkifier2.test.ts @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2020 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import { assert } from 'chai'; +import { IBufferService } from 'common/services/Services'; +import { Linkifier2 } from 'browser/Linkifier2'; +import { MockBufferService } from 'common/TestUtils.test'; +import { ILink } from 'browser/Types'; + +class TestLinkifier2 extends Linkifier2 { + constructor(bufferService: IBufferService) { + super(bufferService); + } + + 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; + + beforeEach(() => { + bufferService = new MockBufferService(100, 10); + linkifier = new TestLinkifier2(bufferService); + }); + + const link: ILink = { + text: 'foo', + range: { + start: { + x: 5, + y: 1 + }, + end: { + x: 7, + y: 1 + } + }, + activate: () => { } + }; + + it('onLinkHover event range is correct', done => { + linkifier.onLinkHover(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('onLinkLeave event range is correct', done => { + linkifier.onLinkLeave(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); + }); + +}); diff --git a/src/browser/Linkifier2.ts b/src/browser/Linkifier2.ts index fbbc0c88c..893677188 100644 --- a/src/browser/Linkifier2.ts +++ b/src/browser/Linkifier2.ts @@ -6,7 +6,7 @@ import { ILinkifier2, ILinkProvider, IBufferCellPosition, ILink, ILinkifierEvent } from './Types'; import { IDisposable } from 'common/Types'; import { IMouseService, IRenderService } from './services/Services'; -import { IBufferService, ICoreService } from 'common/services/Services'; +import { IBufferService } from 'common/services/Services'; import { EventEmitter, IEvent } from 'common/EventEmitter'; export class Linkifier2 implements ILinkifier2 { @@ -180,7 +180,7 @@ export class Linkifier2 implements ILinkifier2 { } } - private _linkHover(element: HTMLElement, link: ILink, event: MouseEvent): void { + protected _linkHover(element: HTMLElement, link: ILink, event: MouseEvent): void { const range = link.range; const scrollOffset = this._bufferService.buffer.ydisp; @@ -192,7 +192,7 @@ export class Linkifier2 implements ILinkifier2 { } } - private _linkLeave(element: HTMLElement, link: ILink, event: MouseEvent): void { + protected _linkLeave(element: HTMLElement, link: ILink, event: MouseEvent): void { const range = link.range; const scrollOffset = this._bufferService.buffer.ydisp;