[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.
- [gnunet-scheme] branch master updated (0ea9aa3 -> 8e9c3b8), gnunet, 2022/12/03
- [gnunet-scheme] 04/09: Define arbitraries for generating hashcodes., gnunet, 2022/12/03
- [gnunet-scheme] 01/09: Define arbitraries for generating bytevector slices.,
gnunet <=
- [gnunet-scheme] 02/09: bv-slice-quickcheck: Implement xform., gnunet, 2022/12/03
- [gnunet-scheme] 05/09: hashcode/quickcheck: Fix use of $sized-bytevector-slice/read-only., gnunet, 2022/12/03
- [gnunet-scheme] 08/09: Extract test-roundtrip from tests/cadet., gnunet, 2022/12/03
- [gnunet-scheme] 09/09: tests/file-sharing: Test request-loc-signature round-tripping., gnunet, 2022/12/03
- [gnunet-scheme] 03/09: doc/bytevector-slices: Fix tenses., gnunet, 2022/12/03
- [gnunet-scheme] 07/09: fs/quickcheck: Correct module name., gnunet, 2022/12/03
- [gnunet-scheme] 06/09: fs/quickcheck: Define arbitraries for generating FS structures., gnunet, 2022/12/03