#!/usr/bin/env sh exec guile -s "$0" "$@" !# ;;; SPDX-FileCopyrightText: 2025 Evgeny Pisemsky ;;; ;;; SPDX-License-Identifier: GPL-3.0-only (use-modules (srfi srfi-1) (srfi srfi-26) (srfi srfi-64) (pastebin data)) (define (new-n-entries pb-data n) (map (cut pb-data-new-entry pb-data <>) (map number->string (iota n)))) (test-begin "pastebin-data") (test-begin "pb-entry-id-valid?") (test-assert (pb-entry-id-valid? "00000")) (test-assert (pb-entry-id-valid? "0001A")) (test-assert (pb-entry-id-valid? "0002b")) (test-assert (not (pb-entry-id-valid? "0../0"))) (test-assert (not (pb-entry-id-valid? "12-34"))) (test-assert (not (pb-entry-id-valid? "0000"))) (test-assert (not (pb-entry-id-valid? "000000"))) (test-end "pb-entry-id-valid?") (test-begin "pb-data-new-entry") (let* ((dir (tmpnam)) (pb-data (pb-data-open dir))) (mkdir dir) (let ((entry-list (new-n-entries pb-data 100))) (test-equal "00000" (pb-entry-id (list-ref entry-list 0))) (test-equal "00001" (pb-entry-id (list-ref entry-list 1))) (test-equal "00009" (pb-entry-id (list-ref entry-list 9))) (test-equal "0000A" (pb-entry-id (list-ref entry-list 10))) (test-equal "0000B" (pb-entry-id (list-ref entry-list 11))) (test-equal "0000Z" (pb-entry-id (list-ref entry-list 35))) (test-equal "0000a" (pb-entry-id (list-ref entry-list 36))) (test-equal "0000b" (pb-entry-id (list-ref entry-list 37))) (test-equal "0000z" (pb-entry-id (list-ref entry-list 61))) (test-equal "00010" (pb-entry-id (list-ref entry-list 62))) (test-equal "0001A" (pb-entry-id (list-ref entry-list 72))) (test-equal "0001a" (pb-entry-id (list-ref entry-list 98))))) (test-end "pb-data-new-entry") (test-begin "pb-data-get-top") (let* ((dir (tmpnam)) (pb-data (pb-data-open dir))) (mkdir dir) (new-n-entries pb-data 5) (let ((top-5 (pb-data-get-top pb-data 5))) (test-equal "00004" (pb-entry-id (first top-5))) (test-equal "00000" (pb-entry-id (last top-5)))) (new-n-entries pb-data 195) (let ((top-20 (pb-data-get-top pb-data 20))) (test-equal "0003D" (pb-entry-id (first top-20))) (test-equal "0002u" (pb-entry-id (last top-20))))) (test-end "pb-data-get-top") (test-end "pastebin-data") ;; Local Variables: ;; mode: scheme ;; End: