#lang racket/base (require rackunit racket/port xml "../didl-lite.rkt" "../private/xml.rkt") (define metadata (didl-lite-audio-item "http://example.test/audio?a=1&b=2" #:protocol-info "http-get:*:audio/flac:DLNA.ORG_OP=01;DLNA.ORG_CI=0" #:title "Rock & Roll " #:artist "Test Artist" #:album "Test Album" #:genre "Alternative" #:year 2026 #:track 7 #:duration 639.9 #:size 50357462)) (define document (call-with-input-string metadata read-xml)) (define root (xml->xexpr (document-element document))) (define item (car (xexpr-child-elements root "item"))) (define resource (car (xexpr-child-elements item "res"))) (check-equal? (xexpr-child-text item "title") "Rock & Roll ") (check-equal? (xexpr-child-text item "class") "object.item.audioItem.musicTrack") (check-equal? (xexpr-child-text item "artist") "Test Artist") (check-equal? (xexpr-child-text item "album") "Test Album") (check-equal? (xexpr-child-text item "genre") "Alternative") (check-equal? (xexpr-child-text item "date") "2026") (check-equal? (xexpr-child-text item "originalTrackNumber") "7") (check-equal? (xexpr-text resource) "http://example.test/audio?a=1&b=2") (check-equal? (xexpr-attribute resource 'protocolInfo) "http-get:*:audio/flac:DLNA.ORG_OP=01;DLNA.ORG_CI=0") (check-equal? (xexpr-attribute resource 'duration) "0:10:39") (check-equal? (xexpr-attribute resource 'size) "50357462")