2016-10-10 6 views
0

나는 라켓 핸드 Server를 실행하고 있습니다 : http://docs.racket-lang.org/handin-server/index.html라켓 핸드 이미지 오류

학생들은 기능 출력하는 이미지를 제출합니다. 나는 그들이 제출 한 바람개비라는 함수를 테스트하려고합니다.

학생 보고서에 다음 메시지가 표시되며 이유가 확실하지 않습니다. 학생 언어가 초보자이고 서버 언어가 아닌 다른 언어를 다룰 수 있습니다. = 다른 이미지를 사용하고 있습니까? 그러나 나는 확신 할 수 없다. (대상 :

이미지 =? 주어진 번째 인수는 입력 기대 (오버레이 (0 0 (오버레이 (0 0 (다각형 (목록 번역 변환 화상 % 을 (인출 점 0 0 255 "청색")) (translate-10 0 (0000000000000000000000000000000)

,691 : 이것은 내 checker.rkt 내 관련 코드 이미지 % ...)

: (개체 : 다른 인수했다; 10 (30 0 (다각형 (리를 번역 ...

(module checker handin-server/checker 

    (require handin-server/grading-utils) 
    (require 2htdp/image) 
    (require (only-in lang/htdp-beginner 
        [image=? compare-images])) 

    .... 
    (check: 
    :language 'racket 
    :requires '(bsl-plus-image)              
    :create-text? #f 
    :textualize? #f 

    ;;pinwheel--------------------------------------- 
    (@test "pinwheel case 1" 
      "Incorrect pinwheel function" 
      (pinwheel (rectangle 10 30 "solid" "blue")) 
      (above (beside (rectangle 10 30 "solid" "blue") (rotate -90 (rectangle 10 30 "solid" "blue"))) 
       (beside (rotate -270 (rectangle 10 30 "solid" "blue")) (rotate 180 (rectangle 10 30 "solid" "blue")))) 
      (lambda (x y) (compare-images x y)) 
     1)  

    )) 

오류에 대한 의견이있는 사람이 있습니까? 코드 기대 값 코드가 올바른 해결책입니다. 내가 더 내가 할 경우에도 뭔가 이상한 일이 일어나고있을 것 같습니다 있습니다 싶습니다

(check-expect (pinwheel (rectangle 10 30 "solid" "blue")) 
       (above (beside (rectangle 10 30 "solid" "blue") (rotate -90 (rectangle 10 30 "solid" "blue"))) 
        (beside (rotate -270 (rectangle 10 30 "solid" "blue")) (rotate 180 (rectangle 10 30 "solid" "blue"))))) 

다음 테스트가 말하는 실패 : 나는 학생의 파일의 내 로컬이를 실행하면 아무 문제가 없다 체크인 기대 예상과 실제는 동일하지 않습니다.

;;pinwheel--------------------------------------- 
     (@test "pinwheel case 1" 
       "Incorrect pinwheel function" 
       (above (beside (rectangle 10 30 "solid" "blue") (rotate -90 (rectangle 10 30 "solid" "blue"))) 
        (beside (rotate -270 (rectangle 10 30 "solid" "blue")) (rotate 180 (rectangle 10 30 "solid" "blue")))) 
       (above (beside (rectangle 10 30 "solid" "blue") (rotate -90 (rectangle 10 30 "solid" "blue"))) 
        (beside (rotate -270 (rectangle 10 30 "solid" "blue")) (rotate 180 (rectangle 10 30 "solid" "blue")))) 

      1) 

혼자서 해결할만큼의 라켓을 모르겠다. 제안이 있으면 알려줘.

답변

0

이것은 내 제안 된 솔루션입니다. 기본적으로 이미지를 비교하기 위해서는 테스트 케이스에서 이미지를 처리하는 것이 가장 쉽습니다. 테스트 케이스에서이를 처리하기 위해서는 eval!을 사용하여 예상 값을 저장하는 변수를 정의해야합니다. 제출 된 파일의 언어로 표현식을 평가합니다. https://groups.google.com/forum/#!topic/racket-users/twViz38AL7M

(module checker handin-server/checker 

    (require handin-server/grading-utils) 
    (require 2htdp/image) 

    (sandbox-path-permissions 
    (cons 
    (list 'read "/") 
    (sandbox-path-permissions))) 
    (define assignment-name "testing") 


    ;Checks that submission is on time and that the user has submissions left 
    (pre: 
    (check-deadline) 
    (check-max-submissions)) 

    ; Ends the report by adding the score and writes it in the user directory 
    ; This way, students can see their reports from the web interface. 
    (post: 
    (add-score-to-report!) 
    (write-report)) 

    (check: 
    ; Get timestamp of the submission and add it to header and report 
    :language 'racket 
    :requires '(bsl-plus-image)              
    :create-text? #f 
    :textualize? #f 

    (update-submission-timestamp!) 
    (add-header-line! (get-submission-timestamp)) 
    (add-report-line! (get-submission-timestamp)) 


    (with-handlers ([exn? 
         (lambda (exn) 
          (message (format "~a will be accepted, but...\n~a" 
              assignment-name (exn-message exn)) 
            '(ok)))]) 

    ; Initialize max score 
    (set-test-max-score! 78) 

    ;;pinwheel--------------------------------------- 
    (!eval (define expected-pinwheel2 (above (beside (rectangle 10 30 "solid" "blue") (rotate -90 (rectangle 10 30 "solid" "blue"))) 
              (beside (rotate -270 (rectangle 10 30 "solid" "red")) (rotate 180 (rectangle 10 30 "solid" "blue")))))) 
    (@test "pinwheel case 1" 
      "Incorrect pinwheel function" 
      (equal? (pinwheel (rectangle 10 30 "solid" "blue")) 
        expected-pinwheel2) 
      #t 
      1) 

    ) 

    )) 
:

기록을 위해

의 BSL-이미지 패키지는 다음 사용하여 만들 수 있습니다