[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] 129/324: netstruct: New promised tests.
From: |
gnunet |
Subject: |
[gnunet-scheme] 129/324: netstruct: New promised tests. |
Date: |
Tue, 21 Sep 2021 13:22:49 +0200 |
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 4c8a9bb43b75df64da722e61a46b1721ffcff183
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Sat May 29 23:06:15 2021 +0200
netstruct: New promised tests.
I renamed s: to s@, as otherwise s: was interpreted as a keyword.
* tests/netstruct.scm
(struct/b): New variable.
("writing to a u16, big endian")
("writing to (smaller) field")
("writing to (smaller) field, at an offset")
("reading from (smaller) field")
("reading from (smaller) field, at an offset")
("writing to a u8")
("writing a structure -> error")
("reading a structure -> error")
("recursive part"): New tests.
---
tests/netstruct.scm | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 61 insertions(+), 3 deletions(-)
diff --git a/tests/netstruct.scm b/tests/netstruct.scm
index d4edeaf..3a28edd 100644
--- a/tests/netstruct.scm
+++ b/tests/netstruct.scm
@@ -17,7 +17,9 @@
;; SPDX-License-Identifier: AGPL3.0-or-later
(import (srfi srfi-26)
(gnu gnunet netstruct procedural)
- (prefix (gnu gnunet netstruct syntactic) s:))
+ (gnu gnunet utils bv-slice)
+ (rnrs bytevectors)
+ (prefix (gnu gnunet netstruct syntactic) s@))
(test-begin "netstruct procedural")
@@ -25,19 +27,75 @@
(make-netstructure
(vector (make-field 'field u8))))
+(define struct/b
+ (make-netstructure
+ (vector (make-field 'field u8)
+ (make-field 'other-field u8))))
+
(test-eqv "first field, offset (struct)"
0
(offsetof struct/a '(field)))
+(test-equal "writing to a u16, big endian"
+ (cons #xde #xad)
+ (let ((s (make-slice/read-write 2)))
+ (set%! u16/big '() s #xdead)
+ (cons (slice-u8-ref s 0)
+ (slice-u8-ref s 1))))
+
+(test-eqv "writing to (smaller) field"
+ #xbe
+ (let ((s (bv-slice/read-write (u8-list->bytevector '(#xbe #xef)))))
+ (set%! struct/b '(field) s #xbe)
+ (slice-u8-ref s 0)))
+
+(test-eqv "writing to (smaller) field, at an offset"
+ #xbe
+ (let ((s (bv-slice/read-write (u8-list->bytevector '(#xbe #xef)))))
+ (set%! struct/b '(other-field) s #xbe)
+ (slice-u8-ref s 1)))
+
+(test-eqv "reading from (smaller) field"
+ #xbe
+ (let ((s (bv-slice/read-write #u8(#xbe #xef))))
+ (read% struct/b '(field) s)))
+
+(test-eqv "reading from (smaller) field, at an offset"
+ #xef
+ (let ((s (bv-slice/read-write #u8(#xbe #xef))))
+ (read% struct/b '(other-field) s)))
+
+(test-eqv "writing to a u8"
+ #xde
+ (let ((s (make-slice/read-write 1)))
+ (set%! u8 '() s #xde)
+ (slice-u8-ref s 0)))
+
+;; While the individual fields can be written / read,
+;; the parts cannot!
+(test-error "writing a structure -> error"
+ &unwritable
+ (set%! struct/b '() (make-slice/read-write 2) 'anything))
+
+(test-error "reading a structure -> error"
+ &unreadable
+ (read% struct/b '() (make-slice/read-write 2)))
+
+(test-eq "recursive part"
+ u8
+ (part (make-netstructure
+ (vector (make-field 'recurse struct/a)))
+ '(recurse field)))
+
(test-end "netstruct procedural")
(test-begin "nestruct syntactic")
(test-eqv "total size (syntactic, constant, one field)"
- 1 (eval '(s:sizeof struct/a '())
+ 1 (eval '(s@sizeof struct/a '())
(current-module)))
(test-eqv "field size (syntactic, constant, one field)"
- 1 (eval '(s:sizeof struct/a '(field))
+ 1 (eval '(s@sizeof struct/a '(field))
(current-module)))
(test-end "nestruct syntactic")
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet-scheme] 103/324: config: parser: parse ${variable} expansions., (continued)
- [gnunet-scheme] 103/324: config: parser: parse ${variable} expansions., gnunet, 2021/09/21
- [gnunet-scheme] 105/324: config: value-parser: Parse values in configuration files., gnunet, 2021/09/21
- [gnunet-scheme] 107/324: tests: message-io: Unbreak., gnunet, 2021/09/21
- [gnunet-scheme] 106/324: doc: Classify modules., gnunet, 2021/09/21
- [gnunet-scheme] 120/324: netstruct syntactic: Fix error when field is constant., gnunet, 2021/09/21
- [gnunet-scheme] 121/324: netstruct: Correct argument order to slice-uN-set!., gnunet, 2021/09/21
- [gnunet-scheme] 113/324: hat-let: Avoid having to import '_' from (rnrs base)., gnunet, 2021/09/21
- [gnunet-scheme] 112/324: config: parser: Fix typo in documentation., gnunet, 2021/09/21
- [gnunet-scheme] 93/324: doc: Some tips on testing., gnunet, 2021/09/21
- [gnunet-scheme] 104/324: config: Implement variable expansion., gnunet, 2021/09/21
- [gnunet-scheme] 129/324: netstruct: New promised tests.,
gnunet <=
- [gnunet-scheme] 99/324: config: Parse configuration lines into one of several types., gnunet, 2021/09/21
- [gnunet-scheme] 115/324: hat-let: Drop incorrect copyright notices., gnunet, 2021/09/21
- [gnunet-scheme] 125/324: netstruct: Only select the relevant part for writing., gnunet, 2021/09/21
- [gnunet-scheme] 127/324: netstruct: Recurse in ‘part’; allow fields within fields., gnunet, 2021/09/21
- [gnunet-scheme] 109/324: doc: Update ROADMAP.org., gnunet, 2021/09/21
- [gnunet-scheme] 134/324: mq: Clarify how a message handlers are chosen., gnunet, 2021/09/21
- [gnunet-scheme] 135/324: mq: Fix typo in docstring of inject-message!., gnunet, 2021/09/21
- [gnunet-scheme] 136/324: mq: Verify message size during message injection., gnunet, 2021/09/21
- [gnunet-scheme] 92/324: guix: Add guile-quickcheck dependency., gnunet, 2021/09/21
- [gnunet-scheme] 138/324: mq: Fix &who for &overly-full-queue-warning., gnunet, 2021/09/21