gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

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