This commit is contained in:
2026-07-29 16:22:04 +02:00
parent 727e0643af
commit 72991f2384
6 changed files with 591 additions and 95 deletions
+36 -5
View File
@@ -1,13 +1,14 @@
#lang racket/base
(require racket/class
"utils.rkt"
)
(require racket/class)
(provide libraries%
library%
)
(define (new-id)
(string->symbol
(format "id-~a-~a" (current-milliseconds) (random 1000000))))
(define library%
(class object%
@@ -85,7 +86,7 @@
(define/public (add-library l)
(let ((libs (send this libraries)))
(send this set-libraries!
(cons (send l ->list) libs))
(cons l libs))
(set! libs #f)
(send l get-id)))
@@ -111,4 +112,34 @@
))
(f (send this libraries))))
))
))
(module+ test
(require rackunit)
(define settings%
(class object%
(super-new)
(define values (make-hasheq))
(define/public (clone section) this)
(define/public (get key default)
(hash-ref values key default))
(define/public (set! key value)
(hash-set! values key value))))
(define settings (new settings%))
(define libraries (new libraries% [settings settings]))
(define library
(new library%
[id 'test-library]
[name "Test library"]
[local-path "/music"]
[host ""]
[prefixes "/music"]))
(check-eq? (send libraries add-library library) 'test-library)
(check-equal? (send settings get 'libraries #f)
'((test-library "Test library" "/music" "" "/music" #f)))
(check-equal? (send libraries count) 1)
(check-eq? (send libraries get-library 'test-library)
(car (send libraries libraries))))