Files
audio-library-manager/test/path-state-test.rkt
T

46 lines
2.7 KiB
Racket

#lang racket/base
(require rackunit
racket/file
keystore
"../private/flac2opus-state.rkt"
"../private/state.rkt"
"../private/util.rkt")
(check-equal? (normalize-relpath-string "disc1\\track.flac") "disc1/track.flac")
(check-equal? (legacy-backslash-relpath-string "disc1/track.flac") "disc1\\track.flac")
(check-exn exn:fail:contract? (lambda () (normalize-relpath-string "../track.flac")))
(check-exn exn:fail:contract? (lambda () (normalize-relpath-string "/music/track.flac")))
(check-exn exn:fail:contract? (lambda () (normalize-relpath-string "C:/music/track.flac")))
(define state-file (make-temporary-file "alm-state-~a.db"))
(define ks (open-manager-state state-file))
(void (state-set-file! ks "disc1\\track.flac" '((status . normalized))))
(check-equal? (state-get-file ks "disc1/track.flac") '((status . normalized)))
(check-equal? (state-known-relpaths ks) '("disc1/track.flac"))
(check-not-false (member "flac-48khz:file:disc1/track.flac" (ks-keys-glob ks "flac-48khz:file:*")))
(check-false (member "flac-48khz:file:disc1\\track.flac" (ks-keys-glob ks "flac-48khz:file:*")))
(define legacy-48-key (string-append "flac-48khz:file:" (legacy-backslash-relpath-string "legacy/track.flac")))
(void (ks-set! ks legacy-48-key '((status . legacy))))
(check-equal? (state-get-file ks "legacy/track.flac") '((status . legacy)))
(void (state-set-file! ks "legacy/track.flac" '((status . migrated))))
(check-equal? (state-get-file ks "legacy/track.flac") '((status . migrated)))
(check-false (member legacy-48-key (ks-keys-glob ks "flac-48khz:file:*")))
(define ks2 (open-flac2opus-state state-file))
(void (flac2opus-state-set-file! ks2 "disc1\\track.flac" '((target-relpath . "disc1/track.opus"))))
(check-equal? (flac2opus-state-get-file ks2 "disc1/track.flac") '((target-relpath . "disc1/track.opus")))
(check-equal? (flac2opus-state-known-relpaths ks2) '("disc1/track.flac"))
(check-not-false (member "flac2opus:file:disc1/track.flac" (ks-keys-glob ks2 "flac2opus:file:*")))
(check-false (member "flac2opus:file:disc1\\track.flac" (ks-keys-glob ks2 "flac2opus:file:*")))
(define legacy-opus-key (string-append "flac2opus:file:" (legacy-backslash-relpath-string "legacy/track.flac")))
(void (ks-set! ks2 legacy-opus-key '((target-relpath . "legacy\\track.opus"))))
(check-equal? (flac2opus-state-get-file ks2 "legacy/track.flac") '((target-relpath . "legacy\\track.opus")))
(void (flac2opus-state-set-file! ks2 "legacy/track.flac" '((target-relpath . "legacy/track.opus"))))
(check-equal? (flac2opus-state-get-file ks2 "legacy/track.flac") '((target-relpath . "legacy/track.opus")))
(check-false (member legacy-opus-key (ks-keys-glob ks2 "flac2opus:file:*")))
(delete-file state-file)