X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=tests%2Fforeign-bit-fields.scm;fp=tests%2Fforeign-bit-fields.scm;h=581bea259b70e69a7223c7dc7e88fa0dd6f74c0d;hb=0db087e68fdb778a73beca6cf0d35d4e718339e5;hp=0000000000000000000000000000000000000000;hpb=0d8955b4f8a481aec28acc91ba964ff66c918e75;p=guile-irrlicht.git diff --git a/tests/foreign-bit-fields.scm b/tests/foreign-bit-fields.scm new file mode 100644 index 0000000..581bea2 --- /dev/null +++ b/tests/foreign-bit-fields.scm @@ -0,0 +1,51 @@ +;;; guile-irrlicht --- FFI bindings for Irrlicht Engine +;;; Copyright (C) 2019 Javier Sancho +;;; +;;; This file is part of guile-irrlicht. +;;; +;;; Guile-irrlicht is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU Lesser General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Guile-irrlicht 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 +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with guile-irrlicht. If not, see +;;; . + + +(use-modules (system foreign) + (srfi srfi-64) + (irrlicht util foreign)) + +(test-begin "foreign-bit-fields") + +;; Simple bit field group +(define bfg (bit-field-group (int8 2) (int8 3) (int8 1))) +(test-equal (get-bit-field-group-type bfg) + (list int8)) +(test-equal (make-c-bit-field-group bfg '(1 1 1)) + '(#b100101)) +(test-equal (parse-c-bit-field-group '(#b110011) bfg) + '(3 4 1)) + +;; Large bit field group +(define bfg (bit-field-group (int8 2) (int8 3) (int8 5))) +(test-equal (get-bit-field-group-type bfg) + (list int8 int8)) +(test-equal (make-c-bit-field-group bfg '(1 1 2)) + '(#b101 #b10)) +(test-equal (parse-c-bit-field-group '(#b10011 #b10) bfg) + '(3 4 2)) + +;; Structs with bit fields +(define types (list int8 (bit-field-group (int8 2) (int8 3) (int8 2)))) +(test-equal (sizeof+ types) 2) +(define values '(10 (2 4 3))) +(test-equal (parse-c-struct+ (make-c-struct+ types values) types) values) + +(test-end "foreign-bit-fields")