Why are "make-" expressions truncated in DrRacket test results and failing?

How can I compare truncated test results in DrRacket?

Actual value (make-ta ...) differs from (make-ta ...), the expected value.

7 points · 3 comments · view on lemmy.world

3 Comments

aberrate_junior_beatnik@midwest.social · 1 pts · 1y (2 replies)

I'm not super familiar with DrRacket (when last I used it it was DrScheme, which should tell you how old I am). I downloaded it off flathub, DDG'd ta-solver-starter.rkt, ran it, and here's what I saw:

Not sure what to tell you!

appleberry@aussie.zone · 2 pts · 1y (1 reply)

I appreciate the effort! Further to this, I seems like if I change my function and the expected result to compare lists instead of 'make-ta' they pass!

(check-expect (sub-slot 1 SOBA) (make-ta "Soba" 1 (list 3))) ; subtract one shift <--- FAIL
(check-expect (sub-slot 3 SOBA) (make-ta "Soba" 1 (list 1))) ; subtract a different shift <--- FAIL

(define (sub-slot slot ta)
  (cond [(and (> (ta-max ta) 0) (> (length (ta-avail ta)) 1))
              (make-ta (ta-name ta) 
                       (sub1 (ta-max ta))
                       (remq slot (ta-avail ta)))]
              [else empty]))
(check-expect (sub-slot 1 SOBA) (make-ta "Soba" 1 (list 3))) ; subtract one shift <--- FAIL
(check-expect (sub-slot 3 SOBA) (list "Soba" 1 (list 1))) ; subtract a different shift <--- PASS

(define (sub-slot slot ta)
  (cond [(and (> (ta-max ta) 0) (> (length (ta-avail ta)) 1))
              (list (ta-name ta) 
                       (sub1 (ta-max ta))
                       (remq slot (ta-avail ta)))]
              [else empty]))

This is the final problem of the course 😅. I'm going to try and get to the bottom of this rather than work around with lists (which is what I did last time). I must have some misunderstanding with make- functions...

appleberry@aussie.zone · 1 pts · 1y

https://docs.racket-lang.org/guide/define-struct.html#(part._trans-struct) Making the structs transparent seems to be a better work-around for now.