fix(ChangeDetector): support for NaN

Closes #4853
This commit is contained in:
Victor Berchet
2015-10-21 13:49:52 -07:00
parent 758062807a
commit 1316c3e391
8 changed files with 43 additions and 26 deletions
@@ -418,7 +418,8 @@ var _availableDefinitions = [
'a()(99)',
'a.sayHi("Jim")',
'passThrough([12])',
'invalidFn(1)'
'invalidFn(1)',
'age'
];
var _availableEventDefinitions = [
@@ -17,8 +17,10 @@ import {
CONST_EXPR,
isPresent,
isBlank,
isNumber,
isJsObject,
FunctionWrapper,
NumberWrapper,
normalizeBool
} from 'angular2/src/core/facade/lang';
import {BaseException, WrappedException} from 'angular2/src/core/facade/exceptions';
@@ -258,6 +260,19 @@ export function main() {
expect(_bindSimpleValue('a.sayHi("Jim")', td)).toEqual(['propName=Hi, Jim']);
});
it('should support NaN', () => {
var person = new Person('misko');
person.age = NumberWrapper.NaN;
var val = _createChangeDetector('age', person);
val.changeDetector.detectChanges();
expect(val.dispatcher.log).toEqual(['propName=NaN']);
val.dispatcher.clear();
val.changeDetector.detectChanges();
expect(val.dispatcher.log).toEqual([]);
});
it('should do simple watching', () => {
var person = new Person('misko');
var val = _createChangeDetector('name', person);
@@ -1420,7 +1435,13 @@ class TestDispatcher implements ChangeDispatcher {
getDebugContext(a, b) { return null; }
_asString(value) { return (isBlank(value) ? 'null' : value.toString()); }
_asString(value) {
if (isNumber(value) && NumberWrapper.isNaN(value)) {
return 'NaN';
}
return isBlank(value) ? 'null' : value.toString();
}
}
class _ChangeDetectorAndDispatcher {