Daniel@0: getJasmineRequireObj=function(jasmineGlobal){var jasmineRequire;if(typeof module!=="undefined"&&module.exports){jasmineGlobal=global;jasmineRequire=exports}else{jasmineRequire=jasmineGlobal.jasmineRequire=jasmineGlobal.jasmineRequire||{}}function getJasmineRequire(){return jasmineRequire}getJasmineRequire().core=function(jRequire){var j$={};jRequire.base(j$,jasmineGlobal);j$.util=jRequire.util();j$.Any=jRequire.Any();j$.CallTracker=jRequire.CallTracker();j$.MockDate=jRequire.MockDate();j$.Clock=jRequire.Clock();j$.DelayedFunctionScheduler=jRequire.DelayedFunctionScheduler();j$.Env=jRequire.Env(j$);j$.ExceptionFormatter=jRequire.ExceptionFormatter();j$.Expectation=jRequire.Expectation();j$.buildExpectationResult=jRequire.buildExpectationResult();j$.JsApiReporter=jRequire.JsApiReporter();j$.matchersUtil=jRequire.matchersUtil(j$);j$.ObjectContaining=jRequire.ObjectContaining(j$);j$.pp=jRequire.pp(j$);j$.QueueRunner=jRequire.QueueRunner(j$);j$.ReportDispatcher=jRequire.ReportDispatcher();j$.Spec=jRequire.Spec(j$);j$.SpyRegistry=jRequire.SpyRegistry(j$);j$.SpyStrategy=jRequire.SpyStrategy();j$.Suite=jRequire.Suite();j$.Timer=jRequire.Timer();j$.version=jRequire.version();j$.matchers=jRequire.requireMatchers(jRequire,j$);return j$};return getJasmineRequire}(this);getJasmineRequireObj().requireMatchers=function(jRequire,j$){var availableMatchers=["toBe","toBeCloseTo","toBeDefined","toBeFalsy","toBeGreaterThan","toBeLessThan","toBeNaN","toBeNull","toBeTruthy","toBeUndefined","toContain","toEqual","toHaveBeenCalled","toHaveBeenCalledWith","toMatch","toThrow","toThrowError"],matchers={};for(var i=0;i0};j$.any=function(clazz){return new j$.Any(clazz)};j$.objectContaining=function(sample){return new j$.ObjectContaining(sample)};j$.createSpy=function(name,originalFn){var spyStrategy=new j$.SpyStrategy({name:name,fn:originalFn,getSpy:function(){return spy}}),callTracker=new j$.CallTracker,spy=function(){var callData={object:this,args:Array.prototype.slice.apply(arguments)};callTracker.track(callData);var returnValue=spyStrategy.exec.apply(this,arguments);callData.returnValue=returnValue;return returnValue};for(var prop in originalFn){if(prop==="and"||prop==="calls"){throw new Error("Jasmine spies would overwrite the 'and' and 'calls' properties on the object being spied upon")}spy[prop]=originalFn[prop]}spy.and=spyStrategy;spy.calls=callTracker;return spy};j$.isSpy=function(putativeSpy){if(!putativeSpy){return false}return putativeSpy.and instanceof j$.SpyStrategy&&putativeSpy.calls instanceof j$.CallTracker};j$.createSpyObj=function(baseName,methodNames){if(!j$.isArray_(methodNames)||methodNames.length===0){throw"createSpyObj requires a non-empty array of method names to create spies for"}var obj={};for(var i=0;i/g,">")};util.argsToArray=function(args){var arrayOfArgs=[];for(var i=0;i0){return"failed"}else{return"passed"}};Spec.prototype.isExecutable=function(){return!this.disabled&&!this.markedPending};Spec.prototype.getFullName=function(){return this.getSpecName(this)};Spec.pendingSpecExceptionMessage="=> marked Pending";Spec.isPendingSpecException=function(e){return!!(e&&e.toString&&e.toString().indexOf(Spec.pendingSpecExceptionMessage)!==-1)};return Spec};if(typeof window==void 0&&typeof exports=="object"){exports.Spec=jasmineRequire.Spec}getJasmineRequireObj().Env=function(j$){function Env(options){options=options||{};var self=this;var global=options.global||j$.getGlobal();var totalSpecsDefined=0;var catchExceptions=true;var realSetTimeout=j$.getGlobal().setTimeout;var realClearTimeout=j$.getGlobal().clearTimeout;this.clock=new j$.Clock(global,new j$.DelayedFunctionScheduler,new j$.MockDate(global));var runnableLookupTable={};var runnableResources={};var currentSpec=null;var currentlyExecutingSuites=[];var currentDeclarationSuite=null;var currentSuite=function(){return currentlyExecutingSuites[currentlyExecutingSuites.length-1]};var currentRunnable=function(){return currentSpec||currentSuite()};var reporter=new j$.ReportDispatcher(["jasmineStarted","jasmineDone","suiteStarted","suiteDone","specStarted","specDone"]);this.specFilter=function(){return true};this.addCustomEqualityTester=function(tester){if(!currentRunnable()){throw new Error("Custom Equalities must be added in a before function or a spec")}runnableResources[currentRunnable().id].customEqualityTesters.push(tester)};this.addMatchers=function(matchersToAdd){if(!currentRunnable()){throw new Error("Matchers must be added in a before function or a spec")}var customMatchers=runnableResources[currentRunnable().id].customMatchers;for(var matcherName in matchersToAdd){customMatchers[matcherName]=matchersToAdd[matcherName]}};j$.Expectation.addCoreMatchers(j$.matchers);var nextSpecId=0;var getNextSpecId=function(){return"spec"+nextSpecId++};var nextSuiteId=0;var getNextSuiteId=function(){return"suite"+nextSuiteId++};var expectationFactory=function(actual,spec){return j$.Expectation.Factory({util:j$.matchersUtil,customEqualityTesters:runnableResources[spec.id].customEqualityTesters,customMatchers:runnableResources[spec.id].customMatchers,actual:actual,addExpectationResult:addExpectationResult});function addExpectationResult(passed,result){return spec.addExpectationResult(passed,result)}};var defaultResourcesForRunnable=function(id,parentRunnableId){var resources={spies:[],customEqualityTesters:[],customMatchers:{}};if(runnableResources[parentRunnableId]){resources.customEqualityTesters=j$.util.clone(runnableResources[parentRunnableId].customEqualityTesters);resources.customMatchers=j$.util.clone(runnableResources[parentRunnableId].customMatchers)}runnableResources[id]=resources};var clearResourcesForRunnable=function(id){spyRegistry.clearSpies();delete runnableResources[id]};var beforeAndAfterFns=function(suite,runnablesExplictlySet){return function(){var befores=[],afters=[],beforeAlls=[],afterAlls=[];while(suite){befores=befores.concat(suite.beforeFns);afters=afters.concat(suite.afterFns);if(runnablesExplictlySet()){beforeAlls=beforeAlls.concat(suite.beforeAllFns);afterAlls=afterAlls.concat(suite.afterAllFns)}suite=suite.parentSuite}return{befores:beforeAlls.reverse().concat(befores.reverse()),afters:afters.concat(afterAlls)}}};var getSpecName=function(spec,suite){return suite.getFullName()+" "+spec.description};var buildExpectationResult=j$.buildExpectationResult,exceptionFormatter=new j$.ExceptionFormatter,expectationResultFactory=function(attrs){attrs.messageFormatter=exceptionFormatter.message;attrs.stackFormatter=exceptionFormatter.stack;return buildExpectationResult(attrs)};this.catchExceptions=function(value){catchExceptions=!!value;return catchExceptions};this.catchingExceptions=function(){return catchExceptions};var maximumSpecCallbackDepth=20;var currentSpecCallbackDepth=0;function clearStack(fn){currentSpecCallbackDepth++;if(currentSpecCallbackDepth>=maximumSpecCallbackDepth){currentSpecCallbackDepth=0;realSetTimeout(fn,0)}else{fn()}}var catchException=function(e){return j$.Spec.isPendingSpecException(e)||catchExceptions};var queueRunnerFactory=function(options){options.catchException=catchException;options.clearStack=options.clearStack||clearStack;options.timer={setTimeout:realSetTimeout,clearTimeout:realClearTimeout};options.fail=self.fail;new j$.QueueRunner(options).execute()};var topSuite=new j$.Suite({env:this,id:getNextSuiteId(),description:"Jasmine__TopLevel__Suite",queueRunner:queueRunnerFactory});runnableLookupTable[topSuite.id]=topSuite;defaultResourcesForRunnable(topSuite.id);currentDeclarationSuite=topSuite;this.topSuite=function(){return topSuite};this.execute=function(runnablesToRun){if(runnablesToRun){runnablesExplictlySet=true}else if(focusedRunnables.length){runnablesExplictlySet=true;runnablesToRun=focusedRunnables}else{runnablesToRun=[topSuite.id]}var allFns=[];for(var i=0;i"};return Any};getJasmineRequireObj().CallTracker=function(){function CallTracker(){var calls=[];this.track=function(context){calls.push(context)};this.any=function(){return!!calls.length};this.count=function(){return calls.length};this.argsFor=function(index){var call=calls[index];return call?call.args:[]};this.all=function(){return calls};this.allArgs=function(){var callArgs=[];for(var i=0;i2){throw new Error("IE < 9 cannot support extra params to setTimeout without a polyfill")}return timer.setTimeout(fn,delay)}return Function.prototype.apply.apply(timer.setTimeout,[global,arguments])};self.setInterval=function(fn,delay,params){if(legacyIE()){if(arguments.length>2){throw new Error("IE < 9 cannot support extra params to setInterval without a polyfill")}return timer.setInterval(fn,delay)}return Function.prototype.apply.apply(timer.setInterval,[global,arguments])};self.clearTimeout=function(id){return Function.prototype.call.apply(timer.clearTimeout,[global,id])};self.clearInterval=function(id){return Function.prototype.call.apply(timer.clearInterval,[global,id])};self.tick=function(millis){if(installed){mockDate.tick(millis);delayedFunctionScheduler.tick(millis)}else{throw new Error("Mock clock is not installed, use jasmine.clock().install()")}};return self;function legacyIE(){return!(realTimingFunctions.setTimeout||realTimingFunctions.setInterval).apply}function replace(dest,source){for(var prop in source){dest[prop]=source[prop]}}function setTimeout(fn,delay){return delayedFunctionScheduler.scheduleFunction(fn,delay,argSlice(arguments,2))}function clearTimeout(id){return delayedFunctionScheduler.removeFunctionWithId(id)}function setInterval(fn,interval){return delayedFunctionScheduler.scheduleFunction(fn,interval,argSlice(arguments,2),true)}function clearInterval(id){return delayedFunctionScheduler.removeFunctionWithId(id)}function argSlice(argsObj,n){return Array.prototype.slice.call(argsObj,n)}}return Clock};getJasmineRequireObj().DelayedFunctionScheduler=function(){function DelayedFunctionScheduler(){var self=this;var scheduledLookup=[];var scheduledFunctions={};var currentTime=0;var delayedFnCount=0;self.tick=function(millis){millis=millis||0;var endTime=currentTime+millis;runScheduledFunctions(endTime);currentTime=endTime};self.scheduleFunction=function(funcToCall,millis,params,recurring,timeoutKey,runAtMillis){var f;if(typeof funcToCall==="string"){f=function(){return eval(funcToCall)}}else{f=funcToCall}millis=millis||0;timeoutKey=timeoutKey||++delayedFnCount;runAtMillis=runAtMillis||currentTime+millis;var funcToSchedule={runAtMillis:runAtMillis,funcToCall:f,recurring:recurring,params:params,timeoutKey:timeoutKey,millis:millis};if(runAtMillis in scheduledFunctions){scheduledFunctions[runAtMillis].push(funcToSchedule)}else{scheduledFunctions[runAtMillis]=[funcToSchedule];scheduledLookup.push(runAtMillis);scheduledLookup.sort(function(a,b){return a-b})}return timeoutKey};self.removeFunctionWithId=function(timeoutKey){for(var runAtMillis in scheduledFunctions){var funcs=scheduledFunctions[runAtMillis];var i=indexOfFirstToPass(funcs,function(func){return func.timeoutKey===timeoutKey});if(i>-1){if(funcs.length===1){delete scheduledFunctions[runAtMillis];deleteFromLookup(runAtMillis)}else{funcs.splice(i,1)}break}}};self.reset=function(){currentTime=0;scheduledLookup=[];scheduledFunctions={};delayedFnCount=0};return self;function indexOfFirstToPass(array,testFn){var index=-1;for(var i=0;i-1){scheduledLookup.splice(i,1)}}function reschedule(scheduledFn){self.scheduleFunction(scheduledFn.funcToCall,scheduledFn.millis,scheduledFn.params,true,scheduledFn.timeoutKey,scheduledFn.runAtMillis+scheduledFn.millis)}function runScheduledFunctions(endTime){if(scheduledLookup.length===0||scheduledLookup[0]>endTime){return}do{currentTime=scheduledLookup.shift();var funcsToRun=scheduledFunctions[currentTime];delete scheduledFunctions[currentTime];for(var i=0;i0&¤tTime!==endTime&&scheduledLookup[0]<=endTime)}}return DelayedFunctionScheduler};getJasmineRequireObj().ExceptionFormatter=function(){function ExceptionFormatter(){this.message=function(error){var message="";if(error.name&&error.message){message+=error.name+": "+error.message}else{message+=error.toString()+" thrown"}if(error.fileName||error.sourceURL){message+=" in "+(error.fileName||error.sourceURL)}if(error.line||error.lineNumber){message+=" (line "+(error.line||error.lineNumber)+")"}return message};this.stack=function(error){return error?error.stack:null}}return ExceptionFormatter};getJasmineRequireObj().Expectation=function(){function Expectation(options){this.util=options.util||{buildFailureMessage:function(){}};this.customEqualityTesters=options.customEqualityTesters||[];this.actual=options.actual;this.addExpectationResult=options.addExpectationResult||function(){};this.isNot=options.isNot;var customMatchers=options.customMatchers||{};for(var matcherName in customMatchers){this[matcherName]=Expectation.prototype.wrapCompare(matcherName,customMatchers[matcherName])}}Expectation.prototype.wrapCompare=function(name,matcherFactory){return function(){var args=Array.prototype.slice.call(arguments,0),expected=args.slice(0),message="";args.unshift(this.actual);var matcher=matcherFactory(this.util,this.customEqualityTesters),matcherCompare=matcher.compare;function defaultNegativeCompare(){var result=matcher.compare.apply(null,args);result.pass=!result.pass;return result}if(this.isNot){matcherCompare=matcher.negativeCompare||defaultNegativeCompare}var result=matcherCompare.apply(null,args);if(!result.pass){if(!result.message){args.unshift(this.isNot);args.unshift(name);message=this.util.buildFailureMessage.apply(null,args)}else{if(Object.prototype.toString.apply(result.message)==="[object Function]"){message=result.message()}else{message=result.message}}}if(expected.length==1){expected=expected[0]}this.addExpectationResult(result.pass,{matcherName:name,passed:result.pass,message:message,actual:this.actual,expected:expected})}};Expectation.addCoreMatchers=function(matchers){var prototype=Expectation.prototype;for(var matcherName in matchers){var matcher=matchers[matcherName];prototype[matcherName]=prototype.wrapCompare(matcherName,matcher)}};Expectation.Factory=function(options){options=options||{};var expect=new Expectation(options);options.isNot=true;expect.not=new Expectation(options);return expect};return Expectation};getJasmineRequireObj().buildExpectationResult=function(){function buildExpectationResult(options){var messageFormatter=options.messageFormatter||function(){},stackFormatter=options.stackFormatter||function(){};var result={matcherName:options.matcherName,message:message(),stack:stack(),passed:options.passed};if(!result.passed){result.expected=options.expected;result.actual=options.actual}return result;function message(){if(options.passed){return"Passed."}else if(options.message){return options.message}else if(options.error){return messageFormatter(options.error)}return""}function stack(){if(options.passed){return""}var error=options.error;if(!error){try{throw new Error(message())}catch(e){error=e}}return stackFormatter(error)}}return buildExpectationResult};getJasmineRequireObj().MockDate=function(){function MockDate(global){var self=this;var currentTime=0;if(!global||!global.Date){self.install=function(){};self.tick=function(){};self.uninstall=function(){};return self}var GlobalDate=global.Date;self.install=function(mockDate){if(mockDate instanceof GlobalDate){currentTime=mockDate.getTime()}else{currentTime=(new GlobalDate).getTime()}global.Date=FakeDate};self.tick=function(millis){millis=millis||0;currentTime=currentTime+millis};self.uninstall=function(){currentTime=0;global.Date=GlobalDate};createDateProperties();return self;function FakeDate(){switch(arguments.length){case 0:return new GlobalDate(currentTime);case 1:return new GlobalDate(arguments[0]);case 2:return new GlobalDate(arguments[0],arguments[1]);case 3:return new GlobalDate(arguments[0],arguments[1],arguments[2]);case 4:return new GlobalDate(arguments[0],arguments[1],arguments[2],arguments[3]);case 5:return new GlobalDate(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);case 6:return new GlobalDate(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);case 7:return new GlobalDate(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6])}}function createDateProperties(){FakeDate.prototype=GlobalDate.prototype;FakeDate.now=function(){if(GlobalDate.now){return currentTime}else{throw new Error("Browser does not support Date.now()")}};FakeDate.toSource=GlobalDate.toSource;FakeDate.toString=GlobalDate.toString;FakeDate.parse=GlobalDate.parse;FakeDate.UTC=GlobalDate.UTC}}return MockDate};getJasmineRequireObj().ObjectContaining=function(j$){function ObjectContaining(sample){this.sample=sample}ObjectContaining.prototype.jasmineMatches=function(other,mismatchKeys,mismatchValues){if(typeof this.sample!=="object"){throw new Error("You must provide an object to objectContaining, not '"+this.sample+"'.")}mismatchKeys=mismatchKeys||[];mismatchValues=mismatchValues||[];var hasKey=function(obj,keyName){return obj!==null&&!j$.util.isUndefined(obj[keyName])};for(var property in this.sample){if(!hasKey(other,property)&&hasKey(this.sample,property)){mismatchKeys.push("expected has key '"+property+"', but missing from actual.")}else if(!j$.matchersUtil.equals(other[property],this.sample[property])){mismatchValues.push("'"+property+"' was '"+(other[property]?j$.util.htmlEscape(other[property].toString()):other[property])+"' in actual, but was '"+(this.sample[property]?j$.util.htmlEscape(this.sample[property].toString()):this.sample[property])+"' in expected.")}}return mismatchKeys.length===0&&mismatchValues.length===0};ObjectContaining.prototype.jasmineToString=function(){return""};return ObjectContaining};getJasmineRequireObj().pp=function(j$){function PrettyPrinter(){this.ppNestLevel_=0;this.seen=[]}PrettyPrinter.prototype.format=function(value){this.ppNestLevel_++;try{if(j$.util.isUndefined(value)){this.emitScalar("undefined")}else if(value===null){this.emitScalar("null")}else if(value===0&&1/value===-Infinity){this.emitScalar("-0")}else if(value===j$.getGlobal()){this.emitScalar("")}else if(value.jasmineToString){this.emitScalar(value.jasmineToString())}else if(typeof value==="string"){this.emitString(value)}else if(j$.isSpy(value)){this.emitScalar("spy on "+value.and.identity())}else if(value instanceof RegExp){this.emitScalar(value.toString())}else if(typeof value==="function"){this.emitScalar("Function")}else if(typeof value.nodeType==="number"){this.emitScalar("HTMLNode")}else if(value instanceof Date){this.emitScalar("Date("+value+")")}else if(j$.util.arrayContains(this.seen,value)){this.emitScalar("")}else if(j$.isArray_(value)||j$.isA_("Object",value)){this.seen.push(value);if(j$.isArray_(value)){this.emitArray(value)}else{this.emitObject(value)}this.seen.pop()}else{this.emitScalar(value.toString())}}finally{this.ppNestLevel_--}};PrettyPrinter.prototype.iterateObject=function(obj,fn){for(var property in obj){if(!Object.prototype.hasOwnProperty.call(obj,property)){continue}fn(property,obj.__lookupGetter__?!j$.util.isUndefined(obj.__lookupGetter__(property))&&obj.__lookupGetter__(property)!==null:false)}};PrettyPrinter.prototype.emitArray=j$.unimplementedMethod_;PrettyPrinter.prototype.emitObject=j$.unimplementedMethod_;PrettyPrinter.prototype.emitScalar=j$.unimplementedMethod_;PrettyPrinter.prototype.emitString=j$.unimplementedMethod_;function StringPrettyPrinter(){PrettyPrinter.call(this);this.string=""}j$.util.inherit(StringPrettyPrinter,PrettyPrinter);StringPrettyPrinter.prototype.emitScalar=function(value){this.append(value)};StringPrettyPrinter.prototype.emitString=function(value){this.append("'"+value+"'")};StringPrettyPrinter.prototype.emitArray=function(array){if(this.ppNestLevel_>j$.MAX_PRETTY_PRINT_DEPTH){this.append("Array"); Daniel@0: return}var length=Math.min(array.length,j$.MAX_PRETTY_PRINT_ARRAY_LENGTH);this.append("[ ");for(var i=0;i0){this.append(", ")}this.format(array[i])}if(array.length>length){this.append(", ...")}this.append(" ]")};StringPrettyPrinter.prototype.emitObject=function(obj){if(this.ppNestLevel_>j$.MAX_PRETTY_PRINT_DEPTH){this.append("Object");return}var self=this;this.append("{ ");var first=true;this.iterateObject(obj,function(property,isGetter){if(first){first=false}else{self.append(", ")}self.append(property);self.append(": ");if(isGetter){self.append("")}else{self.format(obj[property])}});this.append(" }")};StringPrettyPrinter.prototype.append=function(value){this.string+=value};return function(value){var stringPrettyPrinter=new StringPrettyPrinter;stringPrettyPrinter.format(value);return stringPrettyPrinter.string}};getJasmineRequireObj().QueueRunner=function(j$){function once(fn){var called=false;return function(){if(!called){called=true;fn()}}}function QueueRunner(attrs){this.queueableFns=attrs.queueableFns||[];this.onComplete=attrs.onComplete||function(){};this.clearStack=attrs.clearStack||function(fn){fn()};this.onException=attrs.onException||function(){};this.catchException=attrs.catchException||function(){return true};this.userContext=attrs.userContext||{};this.timer=attrs.timeout||{setTimeout:setTimeout,clearTimeout:clearTimeout};this.fail=attrs.fail||function(){}}QueueRunner.prototype.execute=function(){this.run(this.queueableFns,0)};QueueRunner.prototype.run=function(queueableFns,recursiveIndex){var length=queueableFns.length,self=this,iterativeIndex;for(iterativeIndex=recursiveIndex;iterativeIndex0){return attemptAsync(queueableFn)}else{attemptSync(queueableFn)}}var runnerDone=iterativeIndex>=length;if(runnerDone){this.clearStack(this.onComplete)}function attemptSync(queueableFn){try{queueableFn.fn.call(self.userContext)}catch(e){handleException(e,queueableFn)}}function attemptAsync(queueableFn){var clearTimeout=function(){Function.prototype.apply.apply(self.timer.clearTimeout,[j$.getGlobal(),[timeoutId]])},next=once(function(){clearTimeout(timeoutId);self.run(queueableFns,iterativeIndex+1)}),timeoutId;next.fail=function(){self.fail.apply(null,arguments);next()};if(queueableFn.timeout){timeoutId=Function.prototype.apply.apply(self.timer.setTimeout,[j$.getGlobal(),[function(){var error=new Error("Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.");onException(error,queueableFn);next()},queueableFn.timeout()]])}try{queueableFn.fn.call(self.userContext,next)}catch(e){handleException(e,queueableFn);next()}}function onException(e,queueableFn){self.onException(e)}function handleException(e,queueableFn){onException(e,queueableFn);if(!self.catchException(e)){throw e}}};return QueueRunner};getJasmineRequireObj().ReportDispatcher=function(){function ReportDispatcher(methods){var dispatchedMethods=methods||[];for(var i=0;i0){return"failed"}else{return"finished"}};Suite.prototype.execute=function(onComplete){var self=this;this.onStart(this);if(this.disabled){complete();return}var allFns=[];for(var i=0;i=0},buildFailureMessage:function(){var args=Array.prototype.slice.call(arguments,0),matcherName=args[0],isNot=args[1],actual=args[2],expected=args.slice(3),englishyPredicate=matcherName.replace(/[A-Z]/g,function(s){return" "+s.toLowerCase()});var message="Expected "+j$.pp(actual)+(isNot?" not ":" ")+englishyPredicate;if(expected.length>0){for(var i=0;i0){message+=","}message+=" "+j$.pp(expected[i])}}return message+"."}};function eq(a,b,aStack,bStack,customTesters){var result=true;for(var i=0;iexpected}}}}return toBeGreaterThan};getJasmineRequireObj().toBeLessThan=function(){function toBeLessThan(){return{compare:function(actual,expected){return{pass:actual1){throw new Error("toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith")}result.pass=actual.calls.any();result.message=result.pass?"Expected spy "+actual.and.identity()+" not to have been called.":"Expected spy "+actual.and.identity()+" to have been called.";return result}}}return toHaveBeenCalled};getJasmineRequireObj().toHaveBeenCalledWith=function(j$){function toHaveBeenCalledWith(util,customEqualityTesters){return{compare:function(){var args=Array.prototype.slice.call(arguments,0),actual=args[0],expectedArgs=args.slice(1),result={pass:false};if(!j$.isSpy(actual)){throw new Error("Expected a spy, but got "+j$.pp(actual)+".")}if(!actual.calls.any()){result.message=function(){return"Expected spy "+actual.and.identity()+" to have been called with "+j$.pp(expectedArgs)+" but it was never called."};return result}if(util.contains(actual.calls.allArgs(),expectedArgs,customEqualityTesters)){result.pass=true;result.message=function(){return"Expected spy "+actual.and.identity()+" not to have been called with "+j$.pp(expectedArgs)+" but it was."}}else{result.message=function(){return"Expected spy "+actual.and.identity()+" to have been called with "+j$.pp(expectedArgs)+" but actual calls were "+j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g,"")+"."}}return result}}}return toHaveBeenCalledWith};getJasmineRequireObj().toMatch=function(){function toMatch(){return{compare:function(actual,expected){var regexp=new RegExp(expected);return{pass:regexp.test(actual)}}}}return toMatch};getJasmineRequireObj().toThrow=function(j$){function toThrow(util){return{compare:function(actual,expected){var result={pass:false},threw=false,thrown;if(typeof actual!="function"){throw new Error("Actual is not a Function")}try{actual()}catch(e){threw=true;thrown=e}if(!threw){result.message="Expected function to throw an exception.";return result}if(arguments.length==1){result.pass=true;result.message=function(){return"Expected function not to throw, but it threw "+j$.pp(thrown)+"."};return result}if(util.equals(thrown,expected)){result.pass=true;result.message=function(){return"Expected function not to throw "+j$.pp(expected)+"."}}else{result.message=function(){return"Expected function to throw "+j$.pp(expected)+", but it threw "+j$.pp(thrown)+"."}}return result}}}return toThrow};getJasmineRequireObj().toThrowError=function(j$){function toThrowError(util){return{compare:function(actual){var threw=false,pass={pass:true},fail={pass:false},thrown;if(typeof actual!="function"){throw new Error("Actual is not a Function")}var errorMatcher=getMatcher.apply(null,arguments);try{actual()}catch(e){threw=true;thrown=e}if(!threw){fail.message="Expected function to throw an Error.";return fail}if(!(thrown instanceof Error)){fail.message=function(){return"Expected function to throw an Error, but it threw "+j$.pp(thrown)+"."};return fail}if(errorMatcher.hasNoSpecifics()){pass.message="Expected function not to throw an Error, but it threw "+fnNameFor(thrown)+".";return pass}if(errorMatcher.matches(thrown)){pass.message=function(){return"Expected function not to throw "+errorMatcher.errorTypeDescription+errorMatcher.messageDescription()+"."};return pass}else{fail.message=function(){return"Expected function to throw "+errorMatcher.errorTypeDescription+errorMatcher.messageDescription()+", but it threw "+errorMatcher.thrownDescription(thrown)+"."};return fail}}};function getMatcher(){var expected=null,errorType=null;if(arguments.length==2){expected=arguments[1];if(isAnErrorType(expected)){errorType=expected;expected=null}}else if(arguments.length>2){errorType=arguments[1];expected=arguments[2];if(!isAnErrorType(errorType)){throw new Error("Expected error type is not an Error.")}}if(expected&&!isStringOrRegExp(expected)){if(errorType){throw new Error("Expected error message is not a string or RegExp.")}else{throw new Error("Expected is not an Error, string, or RegExp.")}}function messageMatch(message){if(typeof expected=="string"){return expected==message}else{return expected.test(message)}}return{errorTypeDescription:errorType?fnNameFor(errorType):"an exception",thrownDescription:function(thrown){var thrownName=errorType?fnNameFor(thrown.constructor):"an exception",thrownMessage="";if(expected){thrownMessage=" with message "+j$.pp(thrown.message)}return thrownName+thrownMessage},messageDescription:function(){if(expected===null){return""}else if(expected instanceof RegExp){return" with a message matching "+j$.pp(expected)}else{return" with message "+j$.pp(expected)}},hasNoSpecifics:function(){return expected===null&&errorType===null},matches:function(error){return(errorType===null||error.constructor===errorType)&&(expected===null||messageMatch(error.message))}}}function fnNameFor(func){return func.name||func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]}function isStringOrRegExp(potential){return potential instanceof RegExp||typeof potential=="string"}function isAnErrorType(type){if(typeof type!=="function"){return false}var Surrogate=function(){};Surrogate.prototype=type.prototype;return new Surrogate instanceof Error}}return toThrowError};getJasmineRequireObj().interface=function(jasmine,env){var jasmineInterface={describe:function(description,specDefinitions){return env.describe(description,specDefinitions)},xdescribe:function(description,specDefinitions){return env.xdescribe(description,specDefinitions)},fdescribe:function(description,specDefinitions){return env.fdescribe(description,specDefinitions)},it:function(desc,func){return env.it(desc,func)},xit:function(desc,func){return env.xit(desc,func)},fit:function(desc,func){return env.fit(desc,func)},beforeEach:function(beforeEachFunction){return env.beforeEach(beforeEachFunction)},afterEach:function(afterEachFunction){return env.afterEach(afterEachFunction)},beforeAll:function(beforeAllFunction){return env.beforeAll(beforeAllFunction)},afterAll:function(afterAllFunction){return env.afterAll(afterAllFunction)},expect:function(actual){return env.expect(actual)},pending:function(){return env.pending()},fail:function(){return env.fail.apply(env,arguments)},spyOn:function(obj,methodName){return env.spyOn(obj,methodName)},jsApiReporter:new jasmine.JsApiReporter({timer:new jasmine.Timer}),jasmine:jasmine};jasmine.addCustomEqualityTester=function(tester){env.addCustomEqualityTester(tester)};jasmine.addMatchers=function(matchers){return env.addMatchers(matchers)};jasmine.clock=function(){return env.clock};return jasmineInterface};getJasmineRequireObj().version=function(){return"2.1.3"}; Daniel@0: jasmineRequire.html=function(j$){j$.ResultsNode=jasmineRequire.ResultsNode();j$.HtmlReporter=jasmineRequire.HtmlReporter(j$);j$.QueryString=jasmineRequire.QueryString();j$.HtmlSpecFilter=jasmineRequire.HtmlSpecFilter()};jasmineRequire.HtmlReporter=function(j$){var noopTimer={start:function(){},elapsed:function(){return 0}};function HtmlReporter(options){var env=options.env||{},getContainer=options.getContainer,createElement=options.createElement,createTextNode=options.createTextNode,onRaiseExceptionsClick=options.onRaiseExceptionsClick||function(){},timer=options.timer||noopTimer,results=[],specsExecuted=0,failureCount=0,pendingSpecCount=0,htmlReporterMain,symbols,failedSuites=[];this.initialize=function(){clearPrior();htmlReporterMain=createDom("div",{className:"jasmine_html-reporter"},createDom("div",{className:"banner"},createDom("a",{className:"title",href:"http://jasmine.github.io/",target:"_blank"}),createDom("span",{className:"version"},j$.version)),createDom("ul",{className:"symbol-summary"}),createDom("div",{className:"alert"}),createDom("div",{className:"results"},createDom("div",{className:"failures"})));getContainer().appendChild(htmlReporterMain);symbols=find(".symbol-summary")};var totalSpecsDefined;this.jasmineStarted=function(options){totalSpecsDefined=options.totalSpecsDefined||0;timer.start()};var summary=createDom("div",{className:"summary"});var topResults=new j$.ResultsNode({},"",null),currentParent=topResults;this.suiteStarted=function(result){currentParent.addChild(result,"suite");currentParent=currentParent.last()};this.suiteDone=function(result){if(result.status=="failed"){failedSuites.push(result)}if(currentParent==topResults){return}currentParent=currentParent.parent};this.specStarted=function(result){currentParent.addChild(result,"spec")};var failures=[];this.specDone=function(result){if(noExpectations(result)&&typeof console!=="undefined"&&typeof console.error!=="undefined"){console.error("Spec '"+result.fullName+"' has no expectations.")}if(result.status!="disabled"){specsExecuted++}symbols.appendChild(createDom("li",{className:noExpectations(result)?"empty":result.status,id:"spec_"+result.id,title:result.fullName}));if(result.status=="failed"){failureCount++;var failure=createDom("div",{className:"spec-detail failed"},createDom("div",{className:"description"},createDom("a",{title:result.fullName,href:specHref(result)},result.fullName)),createDom("div",{className:"messages"}));var messages=failure.childNodes[1];for(var i=0;i0){statusBarMessage+=pluralize("spec",specsExecuted)+", "+pluralize("failure",failureCount);if(pendingSpecCount){statusBarMessage+=", "+pluralize("pending spec",pendingSpecCount)}statusBarClassName+=failureCount>0?"failed":"passed"}else{statusBarClassName+="skipped";statusBarMessage+="No specs found"}alert.appendChild(createDom("span",{className:statusBarClassName},statusBarMessage));for(i=0;i0){params=paramStr.split("&");for(var i=0;i=0;--i){testedStateHistory.set("currentSerializedState",{x:i})}for(var i=1;i<=10;i++){testedStateHistory.undo();expect(testedStateHistory.get("currentSerializedState")).toEqual({x:i})}expect(testedStateHistory.canUndo()).toBe(false);expect(testedStateHistory.canRedo()).toBe(true);expect(testedStateHistory.get("currentSerializedState")).toEqual({x:10});testedStateHistory.set("maxStackSize",5);for(var i=9;i>=5;--i){testedStateHistory.redo();expect(testedStateHistory.get("currentSerializedState")).toEqual({x:i})}expect(testedStateHistory.canUndo()).toBe(true);expect(testedStateHistory.canRedo()).toBe(false);testedStateHistory.set("maxStackSize",1);testedStateHistory.undo();expect(testedStateHistory.canUndo()).toBe(false);testedStateHistory.redo();expect(testedStateHistory.canRedo()).toBe(false);testedStateHistory.set("maxStackSize",3);testedStateHistory.set("currentSerializedState",{x:100});testedStateHistory.set("currentSerializedState",{x:200});testedStateHistory.set("currentSerializedState",{x:300});testedStateHistory.undo();testedStateHistory.undo();testedStateHistory.undo();expect(testedStateHistory.canUndo()).toBe(false)});it("triggers change:currentSerializedState when needed",function(){var spyNames=["change","change:currentSerializedState"];var spy=jasmine.createSpyObj("listener",spyNames);var expectSpyCallCount=function(){_.each(arguments,function(arg,i){expect(spy[spyNames[i]].calls.count()).toEqual(arg)});for(var i=arguments.length;i