aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/structs/queue_test.html
blob: bbfae75d3e6bad3810489d0668e4108c14d72b4c (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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!DOCTYPE html>
<html>
<!--
Copyright 2006 The Closure Library Authors. All Rights Reserved.

Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Closure Unit Tests - goog.structs.Queue</title>
<script src="../base.js"></script>
<script>
  goog.require('goog.structs.Queue');
  goog.require('goog.testing.jsunit');
</script>
</head>
<body>
<script>

function stringifyQueue(q) {
  var values = q.getValues();
  var s = '';
  for (var i = 0; i < values.length; i++) {
    s += values[i];
  }
  return s;
}

function createQueue() {
  var q = new goog.structs.Queue();
  q.enqueue('a');
  q.enqueue('b');
  q.enqueue('c');
  return q;
}

function testConstructor() {
  var q = new goog.structs.Queue();
  assertTrue('testConstructor(), queue should be empty initially', q.isEmpty());
  assertEquals('testConstructor(), count should be 0', q.getCount(), 0);
  assertEquals('testConstructor(), head element should be undefined', q.peek(),
      undefined);
}

function testCount() {
  var q = createQueue();
  assertEquals('testCount(), count should be 3', q.getCount(), 3);
  q.enqueue('d');
  assertEquals('testCount(), count should be 4', q.getCount(), 4);
  q.dequeue();
  assertEquals('testCount(), count should be 3', q.getCount(), 3);
  q.clear();
  assertEquals('testCount(), count should be 0', q.getCount(), 0);
}

function testEnqueue() {
  var q = new goog.structs.Queue();
  q.enqueue('a');
  assertEquals('testEnqueue(), count should be 1', q.getCount(), 1);
  q.enqueue('b');
  assertEquals('testEnqueue(), count should be 2', q.getCount(), 2);
  assertEquals('testEnqueue(), head element should be a', q.peek(), 'a');
  q.dequeue();
  assertEquals('testEnqueue(), count should be 1', q.getCount(), 1);
  assertEquals('testEnqueue(), head element should be b', q.peek(), 'b');
}

function testDequeue() {
  var q = createQueue();
  var head = q.dequeue();
  assertEquals('testDequeue(), should return a', head, 'a');
  q.dequeue();
  head = q.dequeue();
  assertEquals('testDequeue(), should return c', head, 'c');
  assertTrue('testDequeue(), queue should be empty', q.isEmpty());
  head = q.dequeue();
  assertEquals('testDequeue(), should return undefined for empty queue', head,
      undefined);
}

function testPeek() {
  var q = createQueue();
  var head = q.peek();
  assertEquals('testPeek(), should return a', head, 'a');
  var head2 = q.dequeue();
  assertEquals('testPeek(), dequeue should return peek() result', head, head2);
  head = q.peek();
  assertEquals('testPeek(), should return b', head, 'b');
  q.clear();
  head = q.peek();
  assertEquals('testPeek(), should return undefined for empty queue', head,
      undefined);
}

function testClear() {
  var q = createQueue();
  q.clear();
  assertTrue('testClear(), queue should be empty', q.isEmpty());
}

function testQueue() {
  var q = createQueue();
  assertEquals('testQueue(), contents must be abc', stringifyQueue(q), 'abc');
}

function testRemove() {
  var q = createQueue();
  assertEquals('testRemove(), contents must be abc', stringifyQueue(q), 'abc');

  q.dequeue();
  assertEquals('testRemove(), contents must be bc', stringifyQueue(q), 'bc');

  q.enqueue('a');
  assertEquals('testRemove(), contents must be bca', stringifyQueue(q), 'bca');

  assertTrue('testRemove(), remove should have returned true', q.remove('c'));
  assertEquals('testRemove(), contents must be ba', stringifyQueue(q), 'ba');

  assertTrue('testRemove(), remove should have returned true', q.remove('b'));
  assertEquals('testRemove(), contents must be a', stringifyQueue(q), 'a');

  assertFalse('testRemove(), remove should have returned false', q.remove('b'));
  assertEquals('testRemove(), contents must be a', stringifyQueue(q), 'a');

  assertTrue('testRemove(), remove should have returned true', q.remove('a'));
  assertEquals('testRemove(), contents must be empty', stringifyQueue(q), '');
}

function testContains() {
  var q = createQueue();
  assertTrue('testContains(), contains should have returned true',
      q.contains('a'));
  assertFalse('testContains(), contains should have returned false',
      q.contains('foobar'));
}

</script>
</body>
</html>