mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-02 21:47:27 +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
 |