| function listMatcher(expectedList){ | |
| return eq.call( this, this.actual, expectedList ); | |
| function eq( actual, expected ) { | |
| if( !actual && !expected ) { | |
| return true; | |
| } | |
| if( !actual || !expected ) { | |
| this.message = function(){ | |
| return 'one false but not both ' + | |
| actual + ' ' + expected | |
| }; | |
| return false; | |
| } | |
| if( head(actual) != head(expected) ) { | |
| this.message = function(){ | |
| return 'different items in list' + | |
| head(actual) + head(expected) | |
| }; | |
| return false; | |
| } | |
| return eq.call( this, tail(actual), tail(expected) ); | |
| } | |
| } |