mirror of https://github.com/lukechilds/node.git
Ryan Dahl
14 years ago
2 changed files with 148 additions and 27 deletions
@ -0,0 +1,94 @@ |
|||
var common = require('../common'); |
|||
var assert = require('assert'); |
|||
var L = require('timers').linkedList; |
|||
|
|||
|
|||
var list = { name: "list" }; |
|||
var A = { name: "A" }; |
|||
var B = { name: "B" }; |
|||
var C = { name: "C" }; |
|||
var D = { name: "D" }; |
|||
|
|||
|
|||
L.init(list); |
|||
assert.ok(L.isEmpty(list)); |
|||
assert.equal(null, L.peek(list)); |
|||
|
|||
L.append(list, A); |
|||
// list -> A
|
|||
assert.equal(A, L.peek(list)); |
|||
|
|||
L.append(list, B); |
|||
// list -> A -> B
|
|||
assert.equal(A, L.peek(list)); |
|||
|
|||
L.append(list, C); |
|||
// list -> A -> B -> C
|
|||
assert.equal(A, L.peek(list)); |
|||
|
|||
L.append(list, D); |
|||
// list -> A -> B -> C -> D
|
|||
assert.equal(A, L.peek(list)); |
|||
|
|||
var x = L.shift(list); |
|||
assert.equal(A, x); |
|||
// list -> B -> C -> D
|
|||
assert.equal(B, L.peek(list)); |
|||
|
|||
x = L.shift(list); |
|||
assert.equal(B, x); |
|||
// list -> C -> D
|
|||
assert.equal(C, L.peek(list)); |
|||
|
|||
// B is already removed, so removing it again shouldn't hurt.
|
|||
L.remove(B); |
|||
// list -> C -> D
|
|||
assert.equal(C, L.peek(list)); |
|||
|
|||
// Put B back on the list
|
|||
L.append(list, B); |
|||
// list -> C -> D -> B
|
|||
assert.equal(C, L.peek(list)); |
|||
|
|||
L.remove(C); |
|||
// list -> D -> B
|
|||
assert.equal(D, L.peek(list)); |
|||
|
|||
L.remove(B); |
|||
// list -> D
|
|||
assert.equal(D, L.peek(list)); |
|||
|
|||
L.remove(D); |
|||
// list
|
|||
assert.equal(null, L.peek(list)); |
|||
|
|||
|
|||
assert.ok(L.isEmpty(list)); |
|||
|
|||
|
|||
L.append(list, D); |
|||
// list -> D
|
|||
assert.equal(D, L.peek(list)); |
|||
|
|||
L.append(list, C); |
|||
L.append(list, B); |
|||
L.append(list, A); |
|||
// list -> D -> C -> B -> A
|
|||
|
|||
// Append should REMOVE C from the list and append it to the end.
|
|||
L.append(list, C); |
|||
|
|||
// list -> D -> B -> A -> C
|
|||
assert.equal(D, L.shift(list)); |
|||
// list -> B -> A -> C
|
|||
assert.equal(B, L.peek(list)); |
|||
assert.equal(B, L.shift(list)); |
|||
// list -> A -> C
|
|||
assert.equal(A, L.peek(list)); |
|||
assert.equal(A, L.shift(list)); |
|||
// list -> C
|
|||
assert.equal(C, L.peek(list)); |
|||
assert.equal(C, L.shift(list)); |
|||
// list
|
|||
assert.ok(L.isEmpty(list)); |
|||
|
Loading…
Reference in new issue