mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-10 18:25:17 +00:00
628 lines
5.8 KiB
Plaintext
628 lines
5.8 KiB
Plaintext
# Verify these invariantLs:
|
|
# No overlapping ranges.
|
|
# Size should reflect what's currently in the queue.
|
|
# Empty queue should return nil.
|
|
# Oldest element should be removed first.
|
|
|
|
# Remove from empty queue.
|
|
# Removing from the empty queue should return nil.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
print-size
|
|
----
|
|
0
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
# Add to empty queue.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
print-size
|
|
----
|
|
1
|
|
|
|
remove-compaction
|
|
----
|
|
L5: a-e 1
|
|
|
|
print-size
|
|
----
|
|
0
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
# No intersection in a non-full queue.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
|
|
add-compaction
|
|
L5: g-k 2
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: g-k 2
|
|
|
|
print-size
|
|
----
|
|
2
|
|
|
|
remove-compaction
|
|
----
|
|
L5: a-e 1
|
|
|
|
print-size
|
|
----
|
|
1
|
|
|
|
remove-compaction
|
|
----
|
|
L5: g-k 2
|
|
|
|
print-size
|
|
----
|
|
0
|
|
|
|
# No intersection in a full queue.
|
|
# This adds a compaction once the queue is already full.
|
|
# This new compaction doesn't intersect with any compaction
|
|
# already in the queue, so the oldest element is evicted.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-o 4
|
|
----
|
|
|
|
add-compaction
|
|
L5: p-r 5
|
|
----
|
|
|
|
print-size
|
|
----
|
|
5
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-o 4
|
|
L5: p-r 5
|
|
|
|
add-compaction
|
|
L4: t-u 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-o 4
|
|
L5: p-r 5
|
|
L4: t-u 6
|
|
|
|
print-size
|
|
----
|
|
5
|
|
|
|
|
|
# One intersection in a non-full queue.
|
|
# Try intersections with intervals at
|
|
# various positions in the queue, and examine
|
|
# the state of the queue after.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
#
|
|
print-size
|
|
----
|
|
4
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
|
|
# Add interval which intersects with the first
|
|
# interval in the queue.
|
|
add-compaction
|
|
L4: c-d 5
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
L4: c-d 5
|
|
|
|
print-size
|
|
----
|
|
4
|
|
|
|
# Add an interval which intersects with the last
|
|
# element in the queue.
|
|
add-compaction
|
|
L3: a-d 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
L3: a-d 6
|
|
|
|
print-size
|
|
----
|
|
4
|
|
|
|
# Add an interval which intersects with an element in the
|
|
# middle of the queue.
|
|
add-compaction
|
|
L3: u-z 7
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L3: a-d 6
|
|
L3: u-z 7
|
|
|
|
print-size
|
|
----
|
|
4
|
|
|
|
remove-compaction
|
|
----
|
|
L5: f-g 2
|
|
|
|
remove-compaction
|
|
----
|
|
L5: k-m 3
|
|
|
|
remove-compaction
|
|
----
|
|
L3: a-d 6
|
|
|
|
remove-compaction
|
|
----
|
|
L3: u-z 7
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
# One intersection in a full queue.
|
|
# We're doing some tests with full/non-full queues
|
|
# because the logic for those cases is sometimes different.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
add-compaction
|
|
L5: x-z 5
|
|
----
|
|
|
|
print-size
|
|
----
|
|
5
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
L5: x-z 5
|
|
|
|
# Add interval which intersects with the first
|
|
# interval in the queue.
|
|
add-compaction
|
|
L4: c-d 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
L5: x-z 5
|
|
L4: c-d 6
|
|
|
|
print-size
|
|
----
|
|
5
|
|
|
|
# Add an interval which intersects with the last
|
|
# element in the queue.
|
|
add-compaction
|
|
L3: a-d 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
L5: x-z 5
|
|
L3: a-d 6
|
|
|
|
print-size
|
|
----
|
|
5
|
|
|
|
# Add an interval which intersects with an element in the
|
|
# middle of the queue.
|
|
add-compaction
|
|
L3: u-z 7
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L3: a-d 6
|
|
L3: u-z 7
|
|
|
|
print-size
|
|
----
|
|
4
|
|
|
|
remove-compaction
|
|
----
|
|
L5: f-g 2
|
|
|
|
remove-compaction
|
|
----
|
|
L5: k-m 3
|
|
|
|
remove-compaction
|
|
----
|
|
L3: a-d 6
|
|
|
|
remove-compaction
|
|
----
|
|
L3: u-z 7
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
# More than one intersection in a non-full queue.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
#
|
|
print-size
|
|
----
|
|
4
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
|
|
# Add an interval with intersects with two elements of the queue.
|
|
add-compaction
|
|
L4: f-m 5
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: n-w 4
|
|
L4: f-m 5
|
|
|
|
print-size
|
|
----
|
|
3
|
|
|
|
# Add an interval which clears the entire queue.
|
|
add-compaction
|
|
L3: a-z 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L3: a-z 6
|
|
|
|
print-size
|
|
----
|
|
1
|
|
|
|
remove-compaction
|
|
----
|
|
L3: a-z 6
|
|
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
print-size
|
|
----
|
|
0
|
|
|
|
# More than one intersection in a full queue.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
add-compaction
|
|
L3: y-z 5
|
|
----
|
|
|
|
add-compaction
|
|
L2: a-z 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L2: a-z 6
|
|
|
|
print-size
|
|
----
|
|
1
|
|
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
add-compaction
|
|
L3: y-z 5
|
|
----
|
|
|
|
# Test multiple overlap which doesn't cover the entire full queue.
|
|
|
|
add-compaction
|
|
L2: o-y 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L2: o-y 6
|
|
|
|
remove-compaction
|
|
----
|
|
L5: a-e 1
|
|
|
|
remove-compaction
|
|
----
|
|
L5: f-g 2
|
|
|
|
remove-compaction
|
|
----
|
|
L5: k-m 3
|
|
|
|
remove-compaction
|
|
----
|
|
L2: o-y 6
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
# Test a queue which becomes full, then empty, then fills up again.
|
|
create
|
|
----
|
|
(success)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
add-compaction
|
|
L3: y-z 5
|
|
----
|
|
|
|
add-compaction
|
|
L2: o-y 6
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L2: o-y 6
|
|
|
|
remove-compaction
|
|
----
|
|
L5: a-e 1
|
|
|
|
remove-compaction
|
|
----
|
|
L5: f-g 2
|
|
|
|
remove-compaction
|
|
----
|
|
L5: k-m 3
|
|
|
|
remove-compaction
|
|
----
|
|
L2: o-y 6
|
|
|
|
remove-compaction
|
|
----
|
|
(nil)
|
|
|
|
add-compaction
|
|
L5: a-e 1
|
|
----
|
|
|
|
add-compaction
|
|
L5: f-g 2
|
|
----
|
|
|
|
add-compaction
|
|
L5: k-m 3
|
|
----
|
|
|
|
add-compaction
|
|
L5: n-w 4
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: a-e 1
|
|
L5: f-g 2
|
|
L5: k-m 3
|
|
L5: n-w 4
|
|
|
|
print-size
|
|
----
|
|
4
|
|
|
|
# Test overlap once we refill the queue.
|
|
add-compaction
|
|
L4: b-l 5
|
|
----
|
|
|
|
print-queue
|
|
----
|
|
L5: n-w 4
|
|
L4: b-l 5
|
|
|
|
print-size
|
|
----
|
|
2
|