#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)