Merge from vscode 817eb6b0c720a4ecbc13c020afbbebfed667aa09 (#7356)

This commit is contained in:
Anthony Dresser
2019-09-24 21:36:17 -07:00
committed by GitHub
parent a29ae4d3b9
commit 6a6048d40f
541 changed files with 7045 additions and 7287 deletions

View File

@@ -10,7 +10,7 @@ import { IView } from 'vs/base/browser/ui/grid/grid';
export class TestView implements IView {
private _onDidChange = new Emitter<{ width: number; height: number; } | undefined>();
private readonly _onDidChange = new Emitter<{ width: number; height: number; } | undefined>();
readonly onDidChange = this._onDidChange.event;
get minimumWidth(): number { return this._minimumWidth; }
@@ -28,7 +28,7 @@ export class TestView implements IView {
private _element: HTMLElement = document.createElement('div');
get element(): HTMLElement { this._onDidGetElement.fire(); return this._element; }
private _onDidGetElement = new Emitter<void>();
private readonly _onDidGetElement = new Emitter<void>();
readonly onDidGetElement = this._onDidGetElement.event;
private _width = 0;
@@ -39,10 +39,10 @@ export class TestView implements IView {
get size(): [number, number] { return [this.width, this.height]; }
private _onDidLayout = new Emitter<{ width: number; height: number; }>();
private readonly _onDidLayout = new Emitter<{ width: number; height: number; }>();
readonly onDidLayout: Event<{ width: number; height: number; }> = this._onDidLayout.event;
private _onDidFocus = new Emitter<void>();
private readonly _onDidFocus = new Emitter<void>();
readonly onDidFocus: Event<void> = this._onDidFocus.event;
constructor(

View File

@@ -10,7 +10,7 @@ import { Sash, SashState } from 'vs/base/browser/ui/sash/sash';
class TestView implements IView {
private _onDidChange = new Emitter<number | undefined>();
private readonly _onDidChange = new Emitter<number | undefined>();
readonly onDidChange = this._onDidChange.event;
get minimumSize(): number { return this._minimumSize; }
@@ -22,17 +22,17 @@ class TestView implements IView {
private _element: HTMLElement = document.createElement('div');
get element(): HTMLElement { this._onDidGetElement.fire(); return this._element; }
private _onDidGetElement = new Emitter<void>();
private readonly _onDidGetElement = new Emitter<void>();
readonly onDidGetElement = this._onDidGetElement.event;
private _size = 0;
get size(): number { return this._size; }
private _orthogonalSize: number | undefined = 0;
get orthogonalSize(): number | undefined { return this._orthogonalSize; }
private _onDidLayout = new Emitter<{ size: number; orthogonalSize: number | undefined }>();
private readonly _onDidLayout = new Emitter<{ size: number; orthogonalSize: number | undefined }>();
readonly onDidLayout = this._onDidLayout.event;
private _onDidFocus = new Emitter<void>();
private readonly _onDidFocus = new Emitter<void>();
readonly onDidFocus = this._onDidFocus.event;
constructor(

View File

@@ -690,4 +690,38 @@ suite('IndexTreeModel', function () {
assert.deepEqual(model.getNodeLocation(list[3]), [0, 5]);
});
});
test('refilter with filtered out nodes', function () {
const list: ITreeNode<string>[] = [];
let query = new RegExp('');
const filter = new class implements ITreeFilter<string> {
filter(element: string): boolean {
return query.test(element);
}
};
const model = new IndexTreeModel<string>('test', toSpliceable(list), 'root', { filter });
model.splice([0], 0, Iterator.fromArray([
{ element: 'silver' },
{ element: 'gold' },
{ element: 'platinum' }
]));
assert.deepEqual(toArray(list), ['silver', 'gold', 'platinum']);
query = /platinum/;
model.refilter();
assert.deepEqual(toArray(list), ['platinum']);
model.splice([0], Number.POSITIVE_INFINITY, Iterator.fromArray([
{ element: 'silver' },
{ element: 'gold' },
{ element: 'platinum' }
]));
assert.deepEqual(toArray(list), ['platinum']);
model.refilter();
assert.deepEqual(toArray(list), ['platinum']);
});
});

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import { memoize } from 'vs/base/common/decorators';
import { memoize, createMemoizer } from 'vs/base/common/decorators';
suite('Decorators', () => {
test('memoize should memoize methods', () => {
@@ -125,4 +125,24 @@ suite('Decorators', () => {
assert.equal(foo.answer, 42);
}
});
test('memoize clear', () => {
const memoizer = createMemoizer();
let counter = 0;
class Foo {
@memoizer
get answer() { return ++counter; }
}
const foo = new Foo();
assert.equal(foo.answer, 1);
assert.equal(foo.answer, 1);
memoizer.clear();
assert.equal(foo.answer, 2);
assert.equal(foo.answer, 2);
memoizer.clear();
assert.equal(foo.answer, 3);
assert.equal(foo.answer, 3);
assert.equal(foo.answer, 3);
});
});

View File

@@ -25,7 +25,7 @@ namespace Samples {
export class Document3 {
private _onDidChange = new Emitter<string>();
private readonly _onDidChange = new Emitter<string>();
onDidChange: Event<string> = this._onDidChange.event;

View File

@@ -0,0 +1,49 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import { ResourceTree, IBranchNode, ILeafNode } from 'vs/base/common/resourceTree';
import { URI } from 'vs/base/common/uri';
suite('ResourceTree', function () {
test('ctor', function () {
const tree = new ResourceTree<string, null>(null);
assert(ResourceTree.isBranchNode(tree.root));
assert.equal(tree.root.size, 0);
});
test('simple', function () {
const tree = new ResourceTree<string, null>(null);
tree.add(URI.file('/foo/bar.txt'), 'bar contents');
assert(ResourceTree.isBranchNode(tree.root));
assert.equal(tree.root.size, 1);
let foo = tree.root.get('foo') as IBranchNode<string, null>;
assert(foo);
assert(ResourceTree.isBranchNode(foo));
assert.equal(foo.size, 1);
let bar = foo.get('bar.txt') as ILeafNode<string, null>;
assert(bar);
assert(!ResourceTree.isBranchNode(bar));
assert.equal(bar.element, 'bar contents');
tree.add(URI.file('/hello.txt'), 'hello contents');
assert.equal(tree.root.size, 2);
let hello = tree.root.get('hello.txt') as ILeafNode<string, null>;
assert(hello);
assert(!ResourceTree.isBranchNode(hello));
assert.equal(hello.element, 'hello contents');
tree.delete(URI.file('/foo/bar.txt'));
assert.equal(tree.root.size, 1);
hello = tree.root.get('hello.txt') as ILeafNode<string, null>;
assert(hello);
assert(!ResourceTree.isBranchNode(hello));
assert.equal(hello.element, 'hello contents');
});
});