refactor(test_lib): remove IS_NODEJS

Closes #1015
This commit is contained in:
Marc Laval
2015-03-19 11:35:48 +01:00
parent ab5ed6f2ec
commit 2ff2ce3c6c
14 changed files with 83 additions and 45 deletions

View File

@ -234,7 +234,7 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
return node.nodeType === Node.TEXT_NODE;
}
isCommentNode(node:Node):boolean {
return node.nodeType === Node.TEXT_NODE;
return node.nodeType === Node.COMMENT_NODE;
}
isElementNode(node:Node):boolean {
return node.nodeType === Node.ELEMENT_NODE;

View File

@ -144,6 +144,9 @@ export class DomAdapter {
getShadowRoot(el) {
throw _abstract();
}
getDistributedNodes(el) {
throw _abstract();
}
clone(node) {
throw _abstract();
}
@ -249,4 +252,10 @@ export class DomAdapter {
cssToRules(css:string): List {
throw _abstract();
}
supportsDOMEvents(): boolean {
throw _abstract();
}
supportsNativeShadowDOM(): boolean {
throw _abstract();
}
}

View File

@ -1,6 +1,6 @@
import {ABSTRACT} from 'angular2/src/facade/lang';
import {List, ListWrapper} from 'angular2/src/facade/collection';
import {isPresent} from 'angular2/src/facade/lang';
import {isPresent, isFunction} from 'angular2/src/facade/lang';
import {DomAdapter} from './dom_adapter';
/**
@ -8,6 +8,9 @@ import {DomAdapter} from './dom_adapter';
*/
@ABSTRACT()
export class GenericBrowserDomAdapter extends DomAdapter {
getDistributedNodes(el) {
return el.getDistributedNodes();
}
resolveAndSetHref(el, baseUrl:string, href:string) {
el.href = href == null ? baseUrl : baseUrl + '/../' + href;
}
@ -34,4 +37,10 @@ export class GenericBrowserDomAdapter extends DomAdapter {
this.remove(style);
return rules;
}
supportsDOMEvents(): boolean {
return true;
}
supportsNativeShadowDOM(): boolean {
return isFunction(this.defaultDoc().body.createShadowRoot);
}
}

View File

@ -223,4 +223,13 @@ class Html5LibDomAdapter implements DomAdapter {
List cssToRules(String css) {
throw 'not implemented';
}
List getDistributedNodes(Node) {
throw 'not implemented';
}
bool supportsDOMEvents() {
throw 'not implemented';
}
bool supportsNativeShadowDOM() {
throw 'not implemented';
}
}

View File

@ -3,7 +3,7 @@ var parser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
var serializer = new parse5.Serializer(parse5.TreeAdapters.htmlparser2);
var treeAdapter = parser.treeAdapter;
var cssParse = require('css-parse');
var cssParse = require('css').parse;
var url = require('url');
@ -252,6 +252,9 @@ export class Parse5DomAdapter extends DomAdapter {
getShadowRoot(el) {
return el.shadowRoot;
}
getDistributedNodes(el) {
throw _notImplemented('getDistributedNodes');
}
clone(node) {
var temp = treeAdapter.createElement("template", null, []);
treeAdapter.appendChild(temp, node);
@ -384,7 +387,7 @@ export class Parse5DomAdapter extends DomAdapter {
return treeAdapter.isTextNode(node);
}
isCommentNode(node):boolean {
throw treeAdapter.isCommentNode(node);
return treeAdapter.isCommentNode(node);
}
isElementNode(node):boolean {
return node ? treeAdapter.isElementNode(node) : false;
@ -455,6 +458,12 @@ export class Parse5DomAdapter extends DomAdapter {
}
return rules;
}
supportsDOMEvents(): boolean {
return false;
}
supportsNativeShadowDOM(): boolean {
return false;
}
}
//TODO: build a proper list, this one is all the keys of a HTMLInputElement

View File

@ -24,6 +24,7 @@ class IMPLEMENTS {
bool isPresent(obj) => obj != null;
bool isBlank(obj) => obj == null;
bool isString(obj) => obj is String;
bool isFunction(obj) => obj is Function;
String stringify(obj) => obj.toString();

View File

@ -38,6 +38,10 @@ export function isString(obj):boolean {
return typeof obj === "string";
}
export function isFunction(obj):boolean {
return typeof obj === "function";
}
export function stringify(token):string {
if (typeof token === 'string') {
return token;

View File

@ -18,7 +18,6 @@ import './test_injector.dart';
export './test_injector.dart' show inject;
bool IS_DARTIUM = true;
bool IS_NODEJS = false;
List _testBindings = [];
Injector _injector;
@ -165,11 +164,11 @@ String elementText(n) {
}
if (DOM.isElementNode(n) && DOM.tagName(n) == 'CONTENT') {
return elementText(n.getDistributedNodes());
return elementText(DOM.getDistributedNodes(n));
}
if (DOM.hasShadowRoot(n)) {
return elementText(DOM.childNodesAsList(n.shadowRoot));
return elementText(DOM.childNodesAsList(DOM.getShadowRoot(n)));
}
if (hasNodes(n)) {

View File

@ -14,7 +14,6 @@ export var afterEach = _global.afterEach;
export var expect = _global.expect;
export var IS_DARTIUM = false;
export var IS_NODEJS = typeof window === 'undefined';
export class AsyncTestCompleter {
_done: Function;
@ -293,23 +292,26 @@ export class SpyObject {
function elementText(n) {
var hasNodes = (n) => {var children = DOM.childNodes(n); return children && children.length > 0;}
if (!IS_NODEJS) {
if (n instanceof Comment) return '';
if (n instanceof Array) return n.map((nn) => elementText(nn)).join("");
if (n instanceof Element && DOM.tagName(n) == 'CONTENT')
return elementText(Array.prototype.slice.apply(n.getDistributedNodes()));
if (DOM.hasShadowRoot(n)) return elementText(DOM.childNodesAsList(n.shadowRoot));
if (hasNodes(n)) return elementText(DOM.childNodesAsList(n));
return n.textContent;
} else {
if (n instanceof Array) {
return n.map((nn) => elementText(nn)).join("");
} else if (hasNodes(n)) {
return elementText(DOM.childNodesAsList(n));
} else {
return DOM.getText(n);
}
if (n instanceof Array) {
return n.map((nn) => elementText(nn)).join("");
}
if (DOM.isCommentNode(n)) {
return '';
}
if (DOM.isElementNode(n) && DOM.tagName(n) == 'CONTENT') {
return elementText(Array.prototype.slice.apply(DOM.getDistributedNodes(n)));
}
if (DOM.hasShadowRoot(n)) {
return elementText(DOM.childNodesAsList(DOM.getShadowRoot(n)));
}
if (hasNodes(n)) {
return elementText(DOM.childNodesAsList(n));
}
return DOM.getText(n);
}