@@ -12,6 +12,8 @@ import { SimpleReplElement, RawObjectReplElement, ReplEvaluationInput, ReplModel
1212import { RawDebugSession } from 'vs/workbench/contrib/debug/browser/rawDebugSession' ;
1313import { timeout } from 'vs/base/common/async' ;
1414import { createMockSession } from 'vs/workbench/contrib/debug/test/browser/callStack.test' ;
15+ import { ReplFilter } from 'vs/workbench/contrib/debug/browser/replFilter' ;
16+ import { TreeVisibility } from 'vs/base/browser/ui/tree/tree' ;
1517
1618suite ( 'Debug - REPL' , ( ) => {
1719 let model : DebugModel ;
@@ -189,4 +191,59 @@ suite('Debug - REPL', () => {
189191 assert . equal ( repl . getReplElements ( ) . length , 3 ) ;
190192 assert . equal ( ( < SimpleReplElement > repl . getReplElements ( ) [ 2 ] ) . value , 'second global line' ) ;
191193 } ) ;
194+
195+ test ( 'repl filter' , async ( ) => {
196+ const session = createMockSession ( model ) ;
197+ const repl = new ReplModel ( ) ;
198+ const replFilter = new ReplFilter ( '' ) ;
199+
200+ repl . setFilter ( ( element ) => {
201+ const filterResult = replFilter . filter ( element , TreeVisibility . Visible ) ;
202+ return filterResult === true || filterResult === TreeVisibility . Visible ;
203+ } ) ;
204+
205+ repl . appendToRepl ( session , 'first line\n' , severity . Info ) ;
206+ repl . appendToRepl ( session , 'second line\n' , severity . Info ) ;
207+ repl . appendToRepl ( session , 'third line\n' , severity . Info ) ;
208+ repl . appendToRepl ( session , 'fourth line\n' , severity . Info ) ;
209+
210+ replFilter . filterQuery = 'first' ;
211+ let r1 = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
212+ assert . equal ( r1 . length , 1 ) ;
213+ assert . equal ( r1 [ 0 ] . value , 'first line\n' ) ;
214+
215+ replFilter . filterQuery = '!first' ;
216+ let r2 = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
217+ assert . equal ( r1 . length , 1 ) ;
218+ assert . equal ( r2 [ 0 ] . value , 'second line\n' ) ;
219+ assert . equal ( r2 [ 1 ] . value , 'third line\n' ) ;
220+ assert . equal ( r2 [ 2 ] . value , 'fourth line\n' ) ;
221+
222+ replFilter . filterQuery = 'first, line' ;
223+ let r3 = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
224+ assert . equal ( r3 . length , 4 ) ;
225+ assert . equal ( r3 [ 0 ] . value , 'first line\n' ) ;
226+ assert . equal ( r3 [ 1 ] . value , 'second line\n' ) ;
227+ assert . equal ( r3 [ 2 ] . value , 'third line\n' ) ;
228+ assert . equal ( r3 [ 3 ] . value , 'fourth line\n' ) ;
229+
230+ replFilter . filterQuery = 'line, !second' ;
231+ let r4 = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
232+ assert . equal ( r4 . length , 3 ) ;
233+ assert . equal ( r4 [ 0 ] . value , 'first line\n' ) ;
234+ assert . equal ( r4 [ 1 ] . value , 'third line\n' ) ;
235+ assert . equal ( r4 [ 2 ] . value , 'fourth line\n' ) ;
236+
237+ replFilter . filterQuery = '!second, line' ;
238+ let r4_same = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
239+ assert . equal ( r4 . length , r4_same . length ) ;
240+
241+ replFilter . filterQuery = '!line' ;
242+ let r5 = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
243+ assert . equal ( r5 . length , 0 ) ;
244+
245+ replFilter . filterQuery = 'smth' ;
246+ let r6 = < SimpleReplElement [ ] > repl . getReplElements ( ) ;
247+ assert . equal ( r6 . length , 0 ) ;
248+ } ) ;
192249} ) ;
0 commit comments