@@ -8,7 +8,7 @@ import {Lexer} from 'angular2/src/change_detection/parser/lexer';
88import { Locals } from 'angular2/src/change_detection/parser/locals' ;
99
1010import { ChangeDispatcher , DynamicChangeDetector , ChangeDetectionError , BindingRecord , DirectiveRecord , DirectiveIndex ,
11- PipeRegistry , Pipe , NO_CHANGE , CHECK_ALWAYS , CHECK_ONCE , CHECKED , DETACHED , ON_PUSH , DEFAULT } from 'angular2/change_detection' ;
11+ PipeRegistry , Pipe , CHECK_ALWAYS , CHECK_ONCE , CHECKED , DETACHED , ON_PUSH , DEFAULT , WrappedValue } from 'angular2/change_detection' ;
1212
1313import { JitProtoChangeDetector , DynamicProtoChangeDetector } from 'angular2/src/change_detection/proto_change_detector' ;
1414
@@ -733,24 +733,35 @@ export function main() {
733733 } ) ;
734734 } ) ;
735735
736- it ( "should do nothing when returns NO_CHANGE " , ( ) => {
736+ it ( "should do nothing when no change " , ( ) => {
737737 var registry = new FakePipeRegistry ( 'pipe' , ( ) => new IdentityPipe ( ) )
738738 var ctx = new Person ( "Megatron" ) ;
739739
740740 var c = createChangeDetector ( "memo" , "name | pipe" , ctx , null , registry ) ;
741741 var cd = c [ "changeDetector" ] ;
742742 var dispatcher = c [ "dispatcher" ] ;
743743
744- cd . detectChanges ( ) ;
745744 cd . detectChanges ( ) ;
746745
747746 expect ( dispatcher . log ) . toEqual ( [ 'memo=Megatron' ] ) ;
748747
749- ctx . name = "Optimus Prime" ;
750748 dispatcher . clear ( ) ;
751749 cd . detectChanges ( ) ;
752750
753- expect ( dispatcher . log ) . toEqual ( [ 'memo=Optimus Prime' ] ) ;
751+ expect ( dispatcher . log ) . toEqual ( [ ] ) ;
752+ } ) ;
753+
754+ it ( "should unwrap the wrapped value" , ( ) => {
755+ var registry = new FakePipeRegistry ( 'pipe' , ( ) => new WrappedPipe ( ) )
756+ var ctx = new Person ( "Megatron" ) ;
757+
758+ var c = createChangeDetector ( "memo" , "name | pipe" , ctx , null , registry ) ;
759+ var cd = c [ "changeDetector" ] ;
760+ var dispatcher = c [ "dispatcher" ] ;
761+
762+ cd . detectChanges ( ) ;
763+
764+ expect ( dispatcher . log ) . toEqual ( [ 'memo=Megatron' ] ) ;
754765 } ) ;
755766 } ) ;
756767 } ) ;
@@ -798,19 +809,14 @@ class OncePipe extends Pipe {
798809}
799810
800811class IdentityPipe extends Pipe {
801- state :any ;
802-
803- supports ( newValue ) {
804- return true ;
812+ transform ( value ) {
813+ return value ;
805814 }
815+ }
806816
817+ class WrappedPipe extends Pipe {
807818 transform ( value ) {
808- if ( this . state === value ) {
809- return NO_CHANGE ;
810- } else {
811- this . state = value ;
812- return value ;
813- }
819+ return WrappedValue . wrap ( value ) ;
814820 }
815821}
816822
0 commit comments