1+ /*---------------------------------------------------------------------------------------------
2+ * Copyright (c) Microsoft Corporation. All rights reserved.
3+ * Licensed under the MIT License. See License.txt in the project root for license information.
4+ *--------------------------------------------------------------------------------------------*/
5+
6+ import * as assert from 'assert' ;
7+ import { ListView } from 'vs/base/browser/ui/list/listView' ;
8+ import { IDelegate , IRenderer } from 'vs/base/browser/ui/list/list' ;
9+ import { range } from 'vs/base/common/arrays' ;
10+
11+ suite ( 'ListView' , function ( ) {
12+ test ( 'all rows get disposed' , function ( ) {
13+ const element = document . createElement ( 'div' ) ;
14+ element . style . height = '200px' ;
15+ element . style . width = '200px' ;
16+
17+ const delegate : IDelegate < number > = {
18+ getHeight ( ) { return 20 ; } ,
19+ getTemplateId ( ) { return 'template' ; }
20+ } ;
21+
22+ let templatesCount = 0 ;
23+
24+ const renderer : IRenderer < number , void > = {
25+ templateId : 'template' ,
26+ renderTemplate ( ) { templatesCount ++ ; } ,
27+ renderElement ( ) { } ,
28+ disposeTemplate ( ) { templatesCount -- ; }
29+ } ;
30+
31+ const listView = new ListView < number > ( element , delegate , [ renderer ] ) ;
32+ listView . layout ( 200 ) ;
33+
34+ assert . equal ( templatesCount , 0 , 'no templates have been allocated' ) ;
35+ listView . splice ( 0 , 0 , range ( 100 ) ) ;
36+ assert . equal ( templatesCount , 10 , 'some templates have been allocated' ) ;
37+ listView . dispose ( ) ;
38+ assert . equal ( templatesCount , 0 , 'all templates have been disposed' ) ;
39+ } ) ;
40+ } ) ;
0 commit comments