Files
racket-upnp/tests/didl-lite-test.rkt
T
2026-07-31 10:23:23 +02:00

52 lines
1.5 KiB
Racket

#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 <live>"
#: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 <live>")
(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")