]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/hashcash/hashcash-tests.factor
hashcash: Avoid generating the stamp unless it is unset or set to ``f``
[factor.git] / extra / hashcash / hashcash-tests.factor
index 0482a38747b45163c7d9294943c0dc55a2045955..d71c8acb0dad06e48c5048941aaf1075462092ed 100644 (file)
@@ -1,27 +1,36 @@
-! Copyright (C) 2022 Zoltán Kéri.
+! Copyright (C) 2023 Zoltán Kéri.
 ! See https://factorcode.org/license.txt for BSD license.
 USING: accessors calendar hashcash hashcash.private kernel
 literals namespaces sequences splitting tools.test ;
 IN: hashcash.tests
 
-! We do not want to generate it multiple times. It would be too slow.
-CONSTANT: generated-mint $[ "foo@bar.com" mint ]
+: generate-stamp ( -- stamp ) "foo@bar.com" mint ;
 
-{ t } [ generated-mint dup ":" split third valid-date? swap drop ] unit-test
+! Generate the stamp iff it does not exist.
+! You can delete it with `generated-stamp global delete-at`.
+INITIALIZED-SYMBOL: generated-stamp [ generate-stamp ]
+
+! Generate the stamp iff it is set to `f`.
+! You can change it to `f` with `f generated-stamp set-global`.
+generated-stamp get f eq? [ generate-stamp generated-stamp set ] when
+
+{ t } [
+    generated-stamp get dup ":" split third valid-date? swap drop
+] unit-test
 
 { f } [
     [ -1 expiry-days set
-      generated-mint valid-stamp?
+      generated-stamp get valid-stamp?
     ] with-scope
 ] unit-test
 
 { t } [
     [ 0 expiry-days set
-      generated-mint valid-stamp?
+      generated-stamp get valid-stamp?
     ] with-scope
 ] unit-test
 
-{ t } [ generated-mint valid-stamp? ] unit-test
+{ t } [ generated-stamp get valid-stamp? ] unit-test
 
 { t } [
     <hashcash> "foo@bar.com" >>resource 16 >>bits
@@ -51,6 +60,14 @@ CONSTANT: generated-mint $[ "foo@bar.com" mint ]
 {  30 } [ "220131" "220101" yymmdd-gmt-diff ] unit-test
 { -30 } [ "220101" "220131" yymmdd-gmt-diff ] unit-test
 
-{ t } [ now-gmt 1 days time- timestamp>yymmdd on-or-before-today? nip ] unit-test
-{ t } [ now-gmt timestamp>yymmdd on-or-before-today? nip ] unit-test
-{ f } [ now-gmt 1 days time+ timestamp>yymmdd on-or-before-today? nip ] unit-test
+{ t } [
+    now-gmt 1 days time- timestamp>yymmdd on-or-before-today? nip
+] unit-test
+
+{ t } [
+    now-gmt timestamp>yymmdd on-or-before-today? nip
+] unit-test
+
+{ f } [
+    now-gmt 1 days time+ timestamp>yymmdd on-or-before-today? nip
+] unit-test