Fix tests

This commit is contained in:
Daniel Imms
2017-09-03 14:34:50 -07:00
parent e518ea04c5
commit 36778186e1
9 changed files with 52 additions and 13 deletions
+2 -2
View File
@@ -210,8 +210,8 @@ namespace methods_experimental {
t.registerLinkMatcher(/foo/, () => true, {
matchIndex: 1,
priority: 1,
validationCallback: (uri: string, element: HTMLElement, callback: (isValid: boolean) => void) => {
console.log(uri, element, callback);
validationCallback: (uri: string, callback: (isValid: boolean) => void) => {
console.log(uri, callback);
}
});
t.deregisterLinkMatcher(1);
+10
View File
@@ -42,6 +42,16 @@ describe('CompositionHelper', () => {
},
handler: (text: string) => {
handledText += text;
},
buffer: {
isCursorInViewport: true
},
charMeasure: {
height: 10,
width: 10
},
options: {
lineHeight: 1
}
};
handledText = '';
+2 -1
View File
@@ -1,6 +1,6 @@
import { assert, expect } from 'chai';
import { Terminal } from './Terminal';
import { MockViewport, MockCompositionHelper } from './utils/TestUtils.test';
import { MockViewport, MockCompositionHelper, MockRenderer } from './utils/TestUtils.test';
import { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX } from './Buffer';
const INIT_COLS = 80;
@@ -21,6 +21,7 @@ describe('term.js addons', () => {
rows: INIT_ROWS
});
term.refresh = () => {};
(<any>term).renderer = new MockRenderer();
term.viewport = new MockViewport();
(<any>term).compositionHelper = new MockCompositionHelper();
// Force synchronous writes
+2 -1
View File
@@ -44,6 +44,7 @@ import { DEFAULT_ANSI_COLORS } from './renderer/ColorManager';
import { IMouseZoneManager } from './input/Interfaces';
import { MouseZoneManager } from './input/MouseZoneManager';
import { initialize as initializeCharAtlas } from './renderer/CharAtlas';
import { IRenderer } from './renderer/Interfaces';
// Declare for RequireJS in loadAddon
declare var define: any;
@@ -184,7 +185,7 @@ export class Terminal extends EventEmitter implements ITerminal, IInputHandlingT
private inputHandler: InputHandler;
private parser: Parser;
private renderer: Renderer;
private renderer: IRenderer;
public selectionManager: SelectionManager;
private linkifier: Linkifier;
public buffers: BufferSet;
+2 -1
View File
@@ -31,7 +31,8 @@ describe('Viewport', () => {
}
},
options: {
scrollback: 10
scrollback: 10,
lineHeight: 1
}
};
terminal.buffers = new BufferSet(terminal);
+14 -1
View File
@@ -1,4 +1,17 @@
import { ITerminal, ITerminalOptions } from '../Interfaces';
import { ITerminal, ITerminalOptions, ITheme } from '../Interfaces';
export interface IRenderer {
setTheme(theme: ITheme): IColorSet;
onResize(cols: number, rows: number): void;
onCharSizeChanged(charWidth: number, charHeight: number): void;
onBlur(): void;
onFocus(): void;
onSelectionChanged(start: [number, number], end: [number, number]): void;
onCursorMove(): void;
onOptionsChanged(): void;
clear(): void;
queueRefresh(start: number, end: number): void;
}
export interface IRenderLayer {
/**
+2 -2
View File
@@ -11,9 +11,9 @@ import { SelectionRenderLayer } from './SelectionRenderLayer';
import { CursorRenderLayer } from './CursorRenderLayer';
import { ColorManager } from './ColorManager';
import { BaseRenderLayer } from './BaseRenderLayer';
import { IRenderLayer, IColorSet } from './Interfaces';
import { IRenderLayer, IColorSet, IRenderer } from './Interfaces';
export class Renderer {
export class Renderer implements IRenderer {
/** A queue of the rows to be refreshed */
private _refreshRowsQueue: {start: number, end: number}[] = [];
private _refreshAnimationFrame = null;
+15 -2
View File
@@ -2,11 +2,11 @@
* @license MIT
*/
import { ITerminal, IBuffer, IBufferSet, IBrowser, ICharMeasure, ISelectionManager, ITerminalOptions, IListenerType, IInputHandlingTerminal, IViewport, ICircularList, ICompositionHelper } from '../Interfaces';
import { ITerminal, IBuffer, IBufferSet, IBrowser, ICharMeasure, ISelectionManager, ITerminalOptions, IListenerType, IInputHandlingTerminal, IViewport, ICircularList, ICompositionHelper, ITheme } from '../Interfaces';
import { LineData } from '../Types';
import { Buffer } from '../Buffer';
import * as Browser from './Browser';
import { IColorSet } from '../renderer/Interfaces';
import { IColorSet, IRenderer } from '../renderer/Interfaces';
export class MockTerminal implements ITerminal {
isFocused: boolean;
@@ -204,6 +204,19 @@ export class MockBuffer implements IBuffer {
}
}
export class MockRenderer implements IRenderer {
setTheme(theme: ITheme): IColorSet { return <IColorSet>{}; }
onResize(cols: number, rows: number): void {}
onCharSizeChanged(charWidth: number, charHeight: number): void {}
onBlur(): void {}
onFocus(): void {}
onSelectionChanged(start: [number, number], end: [number, number]): void {}
onCursorMove(): void {}
onOptionsChanged(): void {}
clear(): void {}
queueRefresh(start: number, end: number): void {}
}
export class MockViewport implements IViewport {
onThemeChanged(colors: IColorSet): void {
throw new Error('Method not implemented.');
+3 -3
View File
@@ -131,12 +131,12 @@ interface ILinkMatcherOptions {
* A callback that validates an individual link, returning true if valid and
* false if invalid.
*/
validationCallback?: (uri: string, element: HTMLElement, callback: (isValid: boolean) => void) => void;
validationCallback?: (uri: string, callback: (isValid: boolean) => void) => void;
/**
* A callback that fired when the mouse hovers over a link.
*/
hoverCallback?: LinkMatcherHandler;
hoverCallback?: (event: MouseEvent, uri: string) => boolean | void;
/**
* The priority of the link matcher, this defines the order in which the link
@@ -290,7 +290,7 @@ declare module 'xterm' {
* @param options Options for the link matcher.
* @return The ID of the new matcher, this can be used to deregister.
*/
registerLinkMatcher(regex: RegExp, handler: (event: MouseEvent, uri: string) => boolean | void , options?: ILinkMatcherOptions): number;
registerLinkMatcher(regex: RegExp, handler: (event: MouseEvent, uri: string) => boolean | void, options?: ILinkMatcherOptions): number;
/**
* (EXPERIMENTAL) Deregisters a link matcher if it has been registered.