diff --git a/irteus/test/priority-queue.l b/irteus/test/priority-queue.l
new file mode 100644
index 000000000..9d697fbc9
--- /dev/null
+++ b/irteus/test/priority-queue.l
@@ -0,0 +1,24 @@
+(require :unittest "lib/llib/unittest.l")
+
+(init-unit-test)
+
+(deftest test-priority-queue
+  (let (q e)
+    (setq q (instance priority-queue :init))
+    ;; push
+    (dolist (i (list 1 5 3 2 0 4 2)) (send q :push i))
+    (format t "priority-queue ~A, length ~A~%"
+            (send q :get-val 'lisp::heap)
+            (send q :length))
+    (assert (= (send q :length) 7) "length of ~A is 7" (send q :get-val 'lisp::heap))
+    ;; pop
+    (dolist (i (list 0 1 2 2 3 4 5))
+      (assert (not (send q :empty)) "queue is not empty")
+      (setq e (send q :pop))
+      (format t "queue ~A, popped item ~A~%"
+              (send q :get-val 'lisp::heap) e)
+      (assert (= e i) "dequeued item is ~A" e))
+    (assert (send q :empty) "queue is empty")))
+
+(run-all-tests)
+(exit)