gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet-scheme] 01/09: Define arbitraries for generating bytevector slic


From: gnunet
Subject: [gnunet-scheme] 01/09: Define arbitraries for generating bytevector slices.
Date: Sat, 03 Dec 2022 14:14:31 +0100

This is an automated email from the git hooks/post-receive script.

maxime-devos pushed a commit to branch master
in repository gnunet-scheme.

commit 9878b98733c097f5ef4a13ecf44fa44fab3a4111
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Fri Dec 2 22:28:50 2022 +0100

    Define arbitraries for generating bytevector slices.
    
    * tests/cadet.scm ($sized-bytevector,
    $sized-bytevector-slice/read-write,
    $sized-bytevector-slice/read-only): Move to ...
    * gnu/gnunet/utils/bv-slice-quickcheck.scm: ... new module.
    * Makefile.am (modules): Register new module.
    * doc/bytevecto-slices.tm (Quickcheck integration): Document in new section.
---
 Makefile.am                              |  1 +
 doc/bytevector-slices.tm                 | 20 +++++++++++++
 gnu/gnunet/utils/bv-slice-quickcheck.scm | 50 ++++++++++++++++++++++++++++++++
 tests/cadet.scm                          |  9 +-----
 4 files changed, 72 insertions(+), 8 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 05b5bf4..87f5e64 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -62,6 +62,7 @@ modules = \
   gnu/gnunet/mq-impl/stream.scm \
   \
   gnu/gnunet/utils/bv-slice.scm \
+  gnu/gnunet/utils/bv-slice-quickcheck.scm \
   gnu/gnunet/utils/hat-let.scm \
   gnu/gnunet/utils/cut-syntax.scm \
   gnu/gnunet/utils/netstruct.scm \
diff --git a/doc/bytevector-slices.tm b/doc/bytevector-slices.tm
index ca001bc..b4aa4ca 100644
--- a/doc/bytevector-slices.tm
+++ b/doc/bytevector-slices.tm
@@ -185,6 +185,26 @@
   <scm|&missing-capabilities> exception is raised. Likewise,
   <scm|slice-X-set!> requires the slice to be writable. Both require the part
   of the slice that is being read to be in-bounds.
+
+  <section|Quickcheck integration>
+
+  The module <scm|(gnu gnunet utils bv-slice-quickcheck)><index|(gnu gnunet
+  utils bv-slice-quickcheck)> defined a few <em|arbitraries> for use with
+  Guile-Quickcheck:
+
+  <\explain>
+    <scm|($sized-bytevector-slice/read-write
+    <var|size>)><index|$sized-bytevector-slice/read-write>
+  </explain|Arbitrary generating fresh read-write bytevector slices
+  consisting of <var|size> octets.>
+
+  <\explain>
+    <scm|($sized-bytevector-slice/read-only
+    <var|size>)><index|$sized-bytevector-slice/read-only>
+  </explain|Arbitrary generating fresh read-only bytevector slices consisting
+  of <var|size> octets.>
+
+  \ <todo|rename>
 </body>
 
 <\initial>
diff --git a/gnu/gnunet/utils/bv-slice-quickcheck.scm 
b/gnu/gnunet/utils/bv-slice-quickcheck.scm
new file mode 100644
index 0000000..ba3345e
--- /dev/null
+++ b/gnu/gnunet/utils/bv-slice-quickcheck.scm
@@ -0,0 +1,50 @@
+;; This file is part of scheme-GNUnet, a partial Scheme port of GNUnet.
+;; Copyright © 2022 GNUnet e.V.
+;;
+;; scheme-GNUnet is free software: you can redistribute it and/or modify it
+;; under the terms of the GNU Affero General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+;;
+;; scheme-GNUnet is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; Affero General Public License for more details.
+;;
+;; You should have received a copy of the GNU Affero General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+;;
+;; SPDX-License-Identifier: AGPL-3.0-or-later
+
+;; Arbitraries for bytevector slices (incomplete).
+;; TODO rename.
+(define-library (gnu gnunet utils bv-slice-quickcheck)
+  (export $sized-bytevector-slice/read-write
+         $sized-bytevector-slice/read-only)
+  (import (only (rnrs base) define apply map begin)
+         (only (quickcheck arbitrary) arbitrary arbitrary-gen)
+         (only (quickcheck generator) generator-lift choose-bytevector)
+         (only (gnu gnunet utils bv-slice)
+               bv-slice/read-write bv-slice/read-only))
+  (begin
+    ;; TODO upstream
+    (define ($arbitrary-lift f . a)
+      (arbitrary
+       (gen (apply generator-lift f (map arbitrary-gen a)))
+       ;; TODO
+       (xform #false)))
+
+    ;; TODO upstream
+    (define ($sized-bytevector size)
+      (arbitrary
+       (gen (choose-bytevector size))
+       (xform #false))) ; TODO
+
+    (define ($sized-bytevector-slice/read-write size)
+      "Arbitrary fresh read-write bytevector slices of @var{size} octets."
+      ($arbitrary-lift bv-slice/read-write ($sized-bytevector size)))
+
+    (define ($sized-bytevector-slice/read-only size)
+      "Arbitrary read-only bytevector slices of @var{size} octets."
+      ;; Currently fresh, but not guaranteed.
+      ($arbitrary-lift bv-slice/read-only ($sized-bytevector size)))))
diff --git a/tests/cadet.scm b/tests/cadet.scm
index 53eaeb2..fe0a1dd 100644
--- a/tests/cadet.scm
+++ b/tests/cadet.scm
@@ -22,6 +22,7 @@
              %minimum-local-channel-id
              /:msg:cadet:local:channel:create)
        (gnu gnunet utils bv-slice)
+       (gnu gnunet utils bv-slice-quickcheck)
        (gnu gnunet utils hat-let)
        (gnu gnunet netstruct syntactic)
        (gnu gnunet crypto struct)
@@ -130,18 +131,10 @@
   (arbitrary
    (gen (choose-integer lower upper))
    (xform #false)))
-(define ($sized-bytevector size)
-  (arbitrary
-   (gen (choose-bytevector size))
-   (xform #false)))
 (define ($arbitrary-lift f . a)
   (arbitrary
    (gen (apply generator-lift f (map arbitrary-gen a)))
    (xform #false))) ; TODO
-(define ($sized-bytevector-slice/read-write size)
-  ($arbitrary-lift bv-slice/read-write ($sized-bytevector size)))
-(define ($sized-bytevector-slice/read-only size)
-  ($arbitrary-lift slice/read-only ($sized-bytevector-slice/read-write size)))
 
 (define $channel-number ($integer-in-range 0 (- (expt 2 32) 1)))
 (define $peer ($sized-bytevector-slice/read-only (sizeof /peer-identity '())))

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]