53 lines
1.2 KiB
Racket
53 lines
1.2 KiB
Racket
#lang racket/base
|
|
|
|
(require racket/class
|
|
"media-item.rkt")
|
|
|
|
(provide media-container%)
|
|
|
|
;; A media container contains media-item% instances. An item can itself be
|
|
;; another media-container%, or it can be a track<%>.
|
|
(define media-container%
|
|
(class media-item%
|
|
(init [id #f])
|
|
|
|
(super-new
|
|
[id id]
|
|
[kind 'container])
|
|
|
|
(abstract
|
|
get-title
|
|
get-items
|
|
get-track-reliver)))
|
|
|
|
(module+ test
|
|
(require rackunit)
|
|
|
|
(define track-reliver
|
|
(lambda (track-factory-id track-relive-info)
|
|
(list track-factory-id track-relive-info)))
|
|
|
|
(define test-container%
|
|
(class media-container%
|
|
(super-new [id 'container-id])
|
|
|
|
(define/override (get-title)
|
|
"Container")
|
|
|
|
(define/override (get-items)
|
|
'())
|
|
|
|
(define/override (get-track-reliver)
|
|
track-reliver)))
|
|
|
|
(define container
|
|
(new test-container%))
|
|
|
|
(check-equal? (send container get-id) 'container-id)
|
|
(check-equal? (send container get-kind) 'container)
|
|
(check-eq? (send container get-container) container)
|
|
(check-false (send container get-track))
|
|
(check-equal? (send container get-title) "Container")
|
|
(check-equal? (send container get-items) '())
|
|
(check-eq? (send container get-track-reliver) track-reliver))
|