@@ -287,3 +287,67 @@ test('SubjectDisposed', function () {
287287 onNext ( 550 , 5 )
288288 ) ;
289289} ) ;
290+
291+ test ( 'value vs getValue()' , function ( ) {
292+ var scheduler = new TestScheduler ( ) ;
293+
294+ var subject ;
295+
296+ var resultsGetValue = scheduler . createObserver ( ) ;
297+ var resultsValue = scheduler . createObserver ( ) ;
298+
299+ // create and dispose
300+ scheduler . scheduleAbsolute ( 100 , function ( ) { subject = new BehaviorSubject ( 0 ) ; } ) ;
301+ scheduler . scheduleAbsolute ( 650 , function ( ) { subject . dispose ( ) ; } ) ;
302+
303+ // fill the subject with values
304+ scheduler . scheduleAbsolute ( 150 , function ( ) { subject . onNext ( 1 ) ; } ) ;
305+ scheduler . scheduleAbsolute ( 250 , function ( ) { subject . onNext ( 2 ) ; } ) ;
306+ scheduler . scheduleAbsolute ( 350 , function ( ) { subject . onNext ( 3 ) ; } ) ;
307+ scheduler . scheduleAbsolute ( 450 , function ( ) { subject . onNext ( 4 ) ; } ) ;
308+ scheduler . scheduleAbsolute ( 550 , function ( ) { subject . onError ( new Error ( 'Subject onError() method has been called' ) ) ; } ) ;
309+
310+ // getValue()
311+ scheduler . scheduleAbsolute ( 200 , function ( ) { resultsGetValue . onNext ( subject . getValue ( ) ) ; } ) ;
312+ scheduler . scheduleAbsolute ( 300 , function ( ) { resultsGetValue . onNext ( subject . getValue ( ) ) ; } ) ;
313+ scheduler . scheduleAbsolute ( 400 , function ( ) { resultsGetValue . onNext ( subject . getValue ( ) ) ; } ) ;
314+ scheduler . scheduleAbsolute ( 500 , function ( ) { resultsGetValue . onNext ( subject . getValue ( ) ) ; } ) ;
315+ scheduler . scheduleAbsolute ( 600 , function ( ) { raises ( function ( ) { resultsGetValue . onNext ( subject . getValue ( ) ) ; } ) ; } ) ;
316+ scheduler . scheduleAbsolute ( 700 , function ( ) { raises ( function ( ) { resultsGetValue . onNext ( subject . getValue ( ) ) ; } ) ; } ) ;
317+
318+ // value
319+ scheduler . scheduleAbsolute ( 200 , function ( ) { resultsValue . onNext ( subject . value ) ; } ) ;
320+ scheduler . scheduleAbsolute ( 300 , function ( ) { resultsValue . onNext ( subject . value ) ; } ) ;
321+ scheduler . scheduleAbsolute ( 400 , function ( ) { resultsValue . onNext ( subject . value ) ; } ) ;
322+ scheduler . scheduleAbsolute ( 500 , function ( ) { resultsValue . onNext ( subject . value ) ; } ) ;
323+ scheduler . scheduleAbsolute ( 600 , function ( ) { resultsValue . onNext ( subject . value ) ; } ) ;
324+ scheduler . scheduleAbsolute ( 700 , function ( ) { resultsValue . onNext ( subject . value ) ; } ) ;
325+
326+ scheduler . start ( ) ;
327+
328+ resultsGetValue . messages . assertEqual (
329+ onNext ( 200 , 1 ) ,
330+ onNext ( 300 , 2 ) ,
331+ onNext ( 400 , 3 ) ,
332+ onNext ( 500 , 4 )
333+
334+ // getValue() throws an exception if BehaviorSubject.onError() has been called
335+ //onNext(600)
336+
337+ // getValue() throws an exception if BehaviorSubject has been disposed
338+ //onNext(700)
339+ ) ;
340+
341+ resultsValue . messages . assertEqual (
342+ onNext ( 200 , 1 ) ,
343+ onNext ( 300 , 2 ) ,
344+ onNext ( 400 , 3 ) ,
345+ onNext ( 500 , 4 ) ,
346+
347+ // value is frozen if BehaviorSubject.onError() has been called
348+ onNext ( 600 , 4 ) ,
349+
350+ // value returns null if BehaviorSubject has been disposed
351+ onNext ( 700 , null )
352+ ) ;
353+ } ) ;
0 commit comments