你好,我試圖理解mo程序到底是什麼問題。我已經爲隊列中的隊列編寫了入隊,出隊,頂部和大小的代碼。我還編寫了測試用例來在模塊中試用我的程序。當我嘗試通過輸入以下命令「racket run-tests.rkt | less」來運行測試用例時,出現以下錯誤: 「 default-load-handler:預計只有一個module' declaration for
隊列',但找到額外的表達:#處理隊列和隊列的測試用例
===背景=== 默認加載/使用編譯 「
這裏是我的三個文件以及其中的代碼
1- queue.rkt
(module queue racket
(provide make-queue enqueue dequeue top size queue-tests)
(struct queue (front back size) #:mutable #:transparent)
(define (make-queue) (queue null null 0))
(define (enqueue q elt)
(set-queue-back! q (cons elt (queue-back q)))
(set-queue-size! q (+ (queue-size q) 1))
)
(define (dequeue q)
(cond ((eq? (queue-size q) 0) null)
((null? (queue-front q))
(begin
(set-queue-front! q (cdr (reverse (queue-back q))))
(set-queue-back! q null)
(set-queue-size! q (- (queue-size q) 1))))
(else
(begin
(set-queue-front! q (cdr (queue-front q)))
(set-queue-size! q (- (queue-size q) 1))))
)
)
(define (top q)
(cond ((eq? (queue-size q) 0) null)
((null? (queue-front q)) (last (queue-back q)))
(else (car (queue-front q)))))
(define (size q)
(queue-size q))
; Test cases Here
(include "test-queue.rkt")
)
2-測試queue.rkt
#lang racket/base
(require rackunit)
(define queue-tests
(test-suite
"Tests for the Queue"
(test-case "Initial Queue Properties"
(let ((q (make-queue)))
(check-equal? (size q) 0 "Queue initially should have size zero.")
(check-equal? (dequeue q) null "Dequeue on an empty queue returns null")
(check-equal? (size q) 0 "Dequeue on empty queue leaves size as zero")
))
(test-case "One Element queue ---- Functional test"
(let ((q (make-queue)))
(check-equal? (size q) 0 "Stack initially should be of size zero")
(enqueue q 1)
(check-equal? (size q) 1 "Added one element to back of queue")
(check-equal? (top q) 1 "Take a sneak peak at our first element")
(dequeue q)
(check-equal? (size 1) 0 "size should now be zero")
(check-equal? (dequeue q) null "dequeue on empty queue returns null")
))
(test-case "One Element queue --- Internal Test"
(let ((q (make-queue)))
(check-equal? (size q) 0 "queue initially should have size zero.")
(enqueue q 3)
(check-equal? (size q) 1 "Added one element.")
(check-equal? (queue-back q) '(3) "Is the element in the back list?")
(check-equal? (top s) 3 "Look at our one element.")
(check-equal? (queue-front q) '(3) "Is the element in the front list?")
(dequeue s)
(check-equal? (queue-front q) '() "Is the data empty now?")
))
(test-case "Multi Element queue --- Functional Test"
(let ((q (make-queue))
(elts (list 8 6 7 5 3 0 9))
)
(check-equal? (size q) 0 "queue initially should have size zero.")
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size.")
(check-equal? (top q) i "Testing top with multiple additions.")
)
(for ((i (reverse elts))
(num (reverse (stream->list (in-range 1 8)))))
(check-equal? (top q) i "Testing top with multiple deletions")
(dequeue q)
(check-equal? (size q) (- num 1) "Testing size.")
)
))
(test-case "Multi Element queue --- Ebb and Flow Test"
(let ((q (make-queue))
(elts (list 8 6 7 5 3 0 9))
)
(check-equal? (size q) 0 "queue initially should have size zero.")
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size, first flow.")
(check-equal? (top q) i "Testing top with multiple additions.")
)
(for ((i (reverse elts))
(num (reverse (stream->list (in-range 1 8)))))
(check-equal? (top q) i "Testing top with multiple deletions")
(dequeue q)
(check-equal? (size q) (- num 1) "Testing size, first ebb.")
)
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size, second flow.")
(check-equal? (top q) i "Testing top with multiple additions.")
)
(for ((i (reverse elts))
(num (reverse (stream->list (in-range 1 8)))))
(check-equal? (top q) i "Testing top with multiple deletions")
(dequeue q)
(check-equal? (size q) (- num 1) "Testing size, second ebb.")
)
))
(test-case "Multi Element queue --- Internal Test"
(let ((q (make-queue))
(elts (list 5 8 8 2 3 0 0))
(tmp null)
)
(for ((i elts)
(num (in-range 1 8)))
(enqueue q i)
(check-equal? (size q) num "Testing size, second flow.")
(set! tmp (cons i tmp)) ; "push" element to a list
(check-equal? (queue-front q) tmp "Queue data is in correct form.")
)
))
))
3-運行tests.rkt
#lang racket/base
(require "queue.rkt")
(require rackunit/text-ui)
(run-tests queue-tests)
任何一種在點樣的bug本幫助將不勝感激。提前致謝。
誰是班級是爲了這個? – dyoo
其對於cs 331的數據結構和算法 – Obinna