mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-09 09:20:15 +01:00
219 lines
5.6 KiB
JavaScript
219 lines
5.6 KiB
JavaScript
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||
|
*
|
||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||
|
* the License. You may obtain a copy of the License at
|
||
|
* http://www.mozilla.org/MPL/
|
||
|
*
|
||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||
|
* for the specific language governing rights and limitations under the
|
||
|
* License.
|
||
|
*
|
||
|
* The Original Code is mozilla.org code.
|
||
|
*
|
||
|
* The Initial Developer of the Original Code is
|
||
|
* Netscape Communications Corporation.
|
||
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
||
|
* the Initial Developer. All Rights Reserved.
|
||
|
*
|
||
|
* Contributor(s):
|
||
|
*
|
||
|
* Alternatively, the contents of this file may be used under the terms of
|
||
|
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||
|
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||
|
* of those above. If you wish to allow use of your version of this file only
|
||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||
|
* use your version of this file under the terms of the MPL, indicate your
|
||
|
* decision by deleting the provisions above and replace them with the notice
|
||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||
|
* the provisions above, a recipient may use your version of this file under
|
||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||
|
*
|
||
|
* ***** END LICENSE BLOCK ***** */
|
||
|
var newTextCount = 1;
|
||
|
function NewText() {
|
||
|
return document.createTextNode("Some text #" + newTextCount++);
|
||
|
}
|
||
|
|
||
|
function NewImage() {
|
||
|
var img = document.createElement("img");
|
||
|
if (img) {
|
||
|
img.src = "blue-square.gif";
|
||
|
img.width = "50";
|
||
|
img.height = "50";
|
||
|
}
|
||
|
return img;
|
||
|
}
|
||
|
|
||
|
function NewComment() {
|
||
|
return document.createComment("Another pesky comment");
|
||
|
}
|
||
|
|
||
|
function NewInline() {
|
||
|
var i = document.createElement("i");
|
||
|
if (i) {
|
||
|
i.appendChild(NewText());
|
||
|
i.appendChild(NewComment());
|
||
|
i.appendChild(NewText());
|
||
|
}
|
||
|
return i;
|
||
|
}
|
||
|
|
||
|
function NewBlock() {
|
||
|
var b = document.createElement("p");
|
||
|
if (b) {
|
||
|
b.appendChild(NewText());
|
||
|
b.appendChild(NewComment());
|
||
|
b.appendChild(NewText());
|
||
|
}
|
||
|
return b;
|
||
|
}
|
||
|
|
||
|
function NewButton(msg,func) {
|
||
|
var b = document.createElement("input");
|
||
|
if (b) {
|
||
|
b.type = "button";
|
||
|
b.value = msg;
|
||
|
b.onclick = func;
|
||
|
}
|
||
|
return b;
|
||
|
}
|
||
|
|
||
|
function InsertIt(ctor) {
|
||
|
var list = document.getElementsByName("it");
|
||
|
if (list) {
|
||
|
for (var i = 0; i < list.length; i++) {
|
||
|
var node = list[i];
|
||
|
if (node) {
|
||
|
node.insertBefore(ctor(), node.childNodes[0]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function AppendIt(ctor) {
|
||
|
var list = document.getElementsByName("it");
|
||
|
if (list) {
|
||
|
for (var i = 0; i < list.length; i++) {
|
||
|
var node = list[i];
|
||
|
if (node) {
|
||
|
node.appendChild(ctor());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function InsertText() { InsertIt(NewText); }
|
||
|
function AppendText() { AppendIt(NewText); }
|
||
|
function InsertImage() { InsertIt(NewImage); }
|
||
|
function AppendImage() { AppendIt(NewImage); }
|
||
|
function InsertComment() { InsertIt(NewComment); }
|
||
|
function AppendComment() { AppendIt(NewComment); }
|
||
|
function InsertBlock() { InsertIt(NewBlock); }
|
||
|
function AppendBlock() { AppendIt(NewBlock); }
|
||
|
function InsertInline() { InsertIt(NewInline); }
|
||
|
function AppendInline() { AppendIt(NewInline); }
|
||
|
|
||
|
function FindText(n) {
|
||
|
var kids = n.childNodes;
|
||
|
for (var i = 0; i < kids.length; i++) {
|
||
|
var kid = kids[i];
|
||
|
if (kid.nodeType == Node.TEXT_NODE) {
|
||
|
return kid;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
function ShrinkText() {
|
||
|
var list = document.getElementsByName("it");
|
||
|
if (list) {
|
||
|
for (var i = 0; i < list.length; i++) {
|
||
|
var text = FindText(list[i]);
|
||
|
if (text) {
|
||
|
text.deleteData(0, 1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function GrowText() {
|
||
|
var list = document.getElementsByName("it");
|
||
|
if (list) {
|
||
|
for (var i = 0; i < list.length; i++) {
|
||
|
var text = FindText(list[i]);
|
||
|
if (text) {
|
||
|
text.insertData(0, "Zz");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function RemoveNode(n) {
|
||
|
var list = document.getElementsByName("it");
|
||
|
if (list) {
|
||
|
for (var i = 0; i < list.length; i++) {
|
||
|
var node = list[i];
|
||
|
if (node && node.childNodes[n]) {
|
||
|
node.removeChild(node.childNodes[n]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function RemoveNodeN() {
|
||
|
var list = document.getElementsByName("it");
|
||
|
if (list) {
|
||
|
for (var i = 0; i < list.length; i++) {
|
||
|
var node = list[i];
|
||
|
if (node && node.childNodes.length) {
|
||
|
node.removeChild(node.childNodes[node.childNodes.length-1]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function RemoveNode0() { RemoveNode(0); }
|
||
|
function RemoveNode1() { RemoveNode(1); }
|
||
|
function RemoveNode2() { RemoveNode(2); }
|
||
|
function RemoveNode3() { RemoveNode(3); }
|
||
|
|
||
|
var seed = 0;
|
||
|
function Rand() {
|
||
|
seed = (seed * 69069 + 12359) & 0x7fffffff;
|
||
|
return seed;
|
||
|
}
|
||
|
|
||
|
var tests = new Array(17);
|
||
|
tests[0] = InsertText;
|
||
|
tests[1] = AppendText;
|
||
|
tests[2] = InsertComment;
|
||
|
tests[3] = AppendComment;
|
||
|
tests[4] = InsertImage;
|
||
|
tests[5] = AppendImage;
|
||
|
tests[6] = InsertBlock;
|
||
|
tests[7] = AppendBlock;
|
||
|
tests[8] = InsertInline;
|
||
|
tests[9] = AppendInline;
|
||
|
tests[10] = ShrinkText;
|
||
|
tests[11] = GrowText;
|
||
|
tests[12] = RemoveNode0;
|
||
|
tests[13] = RemoveNode1;
|
||
|
tests[14] = RemoveNode2;
|
||
|
tests[15] = RemoveNode3;
|
||
|
tests[16] = RemoveNodeN;
|
||
|
|
||
|
function RandomTests() {
|
||
|
for (var i = 0; i < 100; i++) {
|
||
|
var rr = Rand() >> 3;
|
||
|
var ix = rr % tests.length;
|
||
|
dump(ix + "\n");
|
||
|
var f = tests[ix];
|
||
|
f();
|
||
|
}
|
||
|
}
|