Coverage report: /home/runner/work/geb/geb/test/bitc.lisp

KindCoveredAll%
expression113146 77.4
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 (in-package :geb-test)
2
 
3
 (define-test geb-bitc :parent geb-test-suite)
4
 
5
 (def bitc-circuit-1
6
   (bitc:compose (bitc:branch
7
                  (bitc:parallel (bitc:compose (bitc:parallel bitc:zero
8
                                                              (bitc:ident 0))
9
                                               (bitc:drop 1))
10
                                 (bitc:ident 0))
11
                  (bitc:parallel (bitc:parallel (bitc:ident 1)
12
                                                (bitc:drop 0))
13
                                 (bitc:ident 0)))
14
                 (bitc:parallel (bitc:swap 1 1)
15
                                (bitc:ident 0))))
16
 
17
 (def test-circuit-1
18
   (to-circuit bitc-circuit-1 :tc_1))
19
 
20
 (define-test vampir-converter
21
   :parent geb-bitc
22
   (of-type list test-circuit-1))
23
 
24
 (define-test bitc-evaluates-and-correctly
25
   :parent geb-bitc
26
   (is equalp #*1 (gapply (to-bitc geb-bool:and) #*11))
27
   (is equalp #*0 (gapply (to-bitc geb-bool:and) #*10))
28
   (is equalp #*0 (gapply (to-bitc geb-bool:and) #*01))
29
   (is equalp #*0 (gapply (to-bitc geb-bool:and) #*00)))
30
 
31
 (define-test bitc-swap-evaluation
32
   :parent geb-bitc
33
   (is equalp #*011 (gapply (bitc:swap 0 3) #*011))
34
   (is equalp #*011 (gapply (bitc:swap 3 0) #*011))
35
   (is equalp #*101 (gapply (bitc:swap 2 1) #*011))
36
   (is equalp #*110 (gapply (bitc:swap 2 1) #*101))
37
   (is equalp #*011 (gapply (bitc:swap 2 1) #*110))
38
   (is equalp #*01011 (gapply (bitc:swap 2 3) #*11010))
39
   (is equalp #*100110 (gapply (bitc:swap 3 3) #*110100)))
40
 
41
 (define-test bitc-full-evaluation-tests
42
   :parent geb-bitc
43
   ;; parallel test
44
   (is equalp
45
       #*10100
46
       (gapply (bitc:parallel (bitc:swap 2 1)
47
                              (bitc:ident 2))
48
               #*01100))
49
   ;; fork!
50
   (is equalp #*0101 (gapply (bitc:fork 2) #*01))
51
   ;; compose!
52
   (is equalp
53
       #*1001
54
       (gapply (bitc:compose
55
                (bitc:parallel (bitc:swap 1 1) ; bool not
56
                               (bitc:ident 2)) ; bool id
57
                (bitc:fork 2))
58
               #*01))
59
   ;; drop it!
60
   (is equalp
61
       #*1
62
       (gapply (bitc:parallel (bitc:drop 1) (bitc:ident 1))
63
               #*01))
64
   ;; and now branch it! also testing one and zero
65
   (is equalp #*1 (gapply (bitc:branch bitc:one bitc:zero) #*01))
66
   (is equalp #*0 (gapply (bitc:branch bitc:one bitc:zero) #*11)))