summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/ajax/mochikit/MochiKit/MockDOM.js
blob: 92558cb7bf3220b95e7b405ee53edf767ddff81b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/***

MochiKit.MockDOM 1.4

See <http://mochikit.com/> for documentation, downloads, license, etc.

(c) 2005 Bob Ippolito.  All rights Reserved.

***/

if (typeof(MochiKit) == "undefined") {
    MochiKit = {};
}

if (typeof(MochiKit.MockDOM) == "undefined") {
    MochiKit.MockDOM = {};
}

MochiKit.MockDOM.NAME = "MochiKit.MockDOM";
MochiKit.MockDOM.VERSION = "1.4";

MochiKit.MockDOM.__repr__ = function () {
    return "[" + this.NAME + " " + this.VERSION + "]";
};

/** @id MochiKit.MockDOM.toString */
MochiKit.MockDOM.toString = function () {
    return this.__repr__();
};

/** @id MochiKit.MockDOM.createDocument */
MochiKit.MockDOM.createDocument = function () {
    var doc = new MochiKit.MockDOM.MockElement("DOCUMENT");
    doc.body = doc.createElement("BODY");
    doc.appendChild(doc.body);
    return doc;
};

/** @id MochiKit.MockDOM.MockElement */
MochiKit.MockDOM.MockElement = function (name, data, ownerDocument) {
    this.tagName = this.nodeName = name.toUpperCase();
    this.ownerDocument = ownerDocument || null;
    if (name == "DOCUMENT") {
        this.nodeType = 9;
        this.childNodes = [];
    } else if (typeof(data) == "string") {
        this.nodeValue = data;
        this.nodeType = 3;
    } else {
        this.nodeType = 1;
        this.childNodes = [];
    }
    if (name.substring(0, 1) == "<") {
        var nameattr = name.substring(
            name.indexOf('"') + 1, name.lastIndexOf('"'));
        name = name.substring(1, name.indexOf(" "));
        this.tagName = this.nodeName = name.toUpperCase();
        this.setAttribute("name", nameattr);
    }
};

MochiKit.MockDOM.MockElement.prototype = {
    /** @id MochiKit.MockDOM.MockElement.prototype.createElement */
    createElement: function (tagName) {
        return new MochiKit.MockDOM.MockElement(tagName, null, this.nodeType == 9 ? this : this.ownerDocument);
    },
    /** @id MochiKit.MockDOM.MockElement.prototype.createTextNode */
    createTextNode: function (text) {
        return new MochiKit.MockDOM.MockElement("text", text, this.nodeType == 9 ? this : this.ownerDocument);
    },
    /** @id MochiKit.MockDOM.MockElement.prototype.setAttribute */
    setAttribute: function (name, value) {
        this[name] = value;
    },
    /** @id MochiKit.MockDOM.MockElement.prototype.getAttribute */
    getAttribute: function (name) {
        return this[name];
    },
    /** @id MochiKit.MockDOM.MockElement.prototype.appendChild */
    appendChild: function (child) {
        this.childNodes.push(child);
    },
    /** @id MochiKit.MockDOM.MockElement.prototype.toString */
    toString: function () {
        return "MockElement(" + this.tagName + ")";
    },
    /** @id MochiKit.MockDOM.MockElement.prototype.getElementsByTagName */
    getElementsByTagName: function (tagName) {
        var foundElements = [];
        MochiKit.Base.nodeWalk(this, function(node){
            if (tagName == '*' || tagName == node.tagName) {
                foundElements.push(node);
                return node.childNodes;
            }
        });
        return foundElements;
    }
};

    /** @id MochiKit.MockDOM.EXPORT_OK */
MochiKit.MockDOM.EXPORT_OK = [
    "mockElement",
    "createDocument"
];

    /** @id MochiKit.MockDOM.EXPORT */
MochiKit.MockDOM.EXPORT = [
    "document"
];

MochiKit.MockDOM.__new__ = function () {
    this.document = this.createDocument();
};

MochiKit.MockDOM.__new__();