Skip to content

Commit

Permalink
Add coverage tests for extract-bit-field, test-bit-field?, and clear-…
Browse files Browse the repository at this point in the history
…bit-field
  • Loading branch information
gambiteer committed Feb 24, 2015
1 parent 44d29a0 commit 3ec1e95
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
12 changes: 12 additions & 0 deletions tests/unit-tests/04-coverage/#.scm
Expand Up @@ -106,3 +106,15 @@
(- (quotient (- x) (expt 2 (- n))))
(quotient x (expt 2 (- n))))
(* x (expt 2 n))))

(define (test-extract-bit-field size position n)
(bitwise-and (arithmetic-shift n (- position))
(bitwise-not (arithmetic-shift -1 size))))

(define (test-test-bit-field? size position n)
(not (eqv? (test-extract-bit-field size position n)
0)))

(define (test-clear-bit-field size position n)
(bitwise-ior (arithmetic-shift (arithmetic-shift n (- (+ size position))) (+ size position))
(test-extract-bit-field position 0 n)))
90 changes: 90 additions & 0 deletions tests/unit-tests/04-coverage/_num.scm
Expand Up @@ -594,3 +594,93 @@
(check-eqv? (* 1+i 3.4359738368e10) 3.4359738368e10+3.4359738368e10i)
(check-= (* 1+i 1+i) +2i)
(check-eqv? (* 1+i 1+i) +2i)

#;(let ()

(define (make-symbol . args)
(string->symbol (apply string-append (map (lambda (x) (if (symbol? x) (symbol->string x) x)) args))))

(let ((ns (list (random-integer (expt 2 400))
(- (random-integer (expt 2 400)))
(random-integer ##max-fixnum)
(- (random-integer ##max-fixnum))))
(sizes (list (random-integer 200)
(random-integer 20)))
(positions (list (random-integer 200)
(random-integer 20))))
(for-each (lambda (op-name)
(for-each (lambda (n)
(for-each (lambda (size)
(for-each (lambda (position)
(for-each display (list "(check-eqv? ("
op-name
" "
size
" "
position
" "
n
") ("
(make-symbol 'test- op-name)
" "
size
" "
position
" "
n
"))\n")))

positions))
sizes))
ns))
'(extract-bit-field test-bit-field? clear-bit-field))
))

(check-eqv? (extract-bit-field 79 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-extract-bit-field 79 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (extract-bit-field 79 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-extract-bit-field 79 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (extract-bit-field 4 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-extract-bit-field 4 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (extract-bit-field 4 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-extract-bit-field 4 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (extract-bit-field 79 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-extract-bit-field 79 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (extract-bit-field 79 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-extract-bit-field 79 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (extract-bit-field 4 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-extract-bit-field 4 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (extract-bit-field 4 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-extract-bit-field 4 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (extract-bit-field 79 109 103713854486608146) (test-extract-bit-field 79 109 103713854486608146))
(check-eqv? (extract-bit-field 79 13 103713854486608146) (test-extract-bit-field 79 13 103713854486608146))
(check-eqv? (extract-bit-field 4 109 103713854486608146) (test-extract-bit-field 4 109 103713854486608146))
(check-eqv? (extract-bit-field 4 13 103713854486608146) (test-extract-bit-field 4 13 103713854486608146))
(check-eqv? (extract-bit-field 79 109 -608462309321751311) (test-extract-bit-field 79 109 -608462309321751311))
(check-eqv? (extract-bit-field 79 13 -608462309321751311) (test-extract-bit-field 79 13 -608462309321751311))
(check-eqv? (extract-bit-field 4 109 -608462309321751311) (test-extract-bit-field 4 109 -608462309321751311))
(check-eqv? (extract-bit-field 4 13 -608462309321751311) (test-extract-bit-field 4 13 -608462309321751311))
(check-eqv? (test-bit-field? 79 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-test-bit-field? 79 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (test-bit-field? 79 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-test-bit-field? 79 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (test-bit-field? 4 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-test-bit-field? 4 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (test-bit-field? 4 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-test-bit-field? 4 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (test-bit-field? 79 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-test-bit-field? 79 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (test-bit-field? 79 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-test-bit-field? 79 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (test-bit-field? 4 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-test-bit-field? 4 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (test-bit-field? 4 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-test-bit-field? 4 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (test-bit-field? 79 109 103713854486608146) (test-test-bit-field? 79 109 103713854486608146))
(check-eqv? (test-bit-field? 79 13 103713854486608146) (test-test-bit-field? 79 13 103713854486608146))
(check-eqv? (test-bit-field? 4 109 103713854486608146) (test-test-bit-field? 4 109 103713854486608146))
(check-eqv? (test-bit-field? 4 13 103713854486608146) (test-test-bit-field? 4 13 103713854486608146))
(check-eqv? (test-bit-field? 79 109 -608462309321751311) (test-test-bit-field? 79 109 -608462309321751311))
(check-eqv? (test-bit-field? 79 13 -608462309321751311) (test-test-bit-field? 79 13 -608462309321751311))
(check-eqv? (test-bit-field? 4 109 -608462309321751311) (test-test-bit-field? 4 109 -608462309321751311))
(check-eqv? (test-bit-field? 4 13 -608462309321751311) (test-test-bit-field? 4 13 -608462309321751311))
(check-eqv? (clear-bit-field 79 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-clear-bit-field 79 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (clear-bit-field 79 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-clear-bit-field 79 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (clear-bit-field 4 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-clear-bit-field 4 109 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (clear-bit-field 4 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261) (test-clear-bit-field 4 13 819289025694944586759318860605577375432306836892969486208725872284023634378009092711199478706560747106627062245621894261))
(check-eqv? (clear-bit-field 79 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-clear-bit-field 79 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (clear-bit-field 79 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-clear-bit-field 79 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (clear-bit-field 4 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-clear-bit-field 4 109 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (clear-bit-field 4 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942) (test-clear-bit-field 4 13 -2560481503630520084802251286722070556183711270103420284967696348412255744250015987909211821032873931231996971794614933942))
(check-eqv? (clear-bit-field 79 109 103713854486608146) (test-clear-bit-field 79 109 103713854486608146))
(check-eqv? (clear-bit-field 79 13 103713854486608146) (test-clear-bit-field 79 13 103713854486608146))
(check-eqv? (clear-bit-field 4 109 103713854486608146) (test-clear-bit-field 4 109 103713854486608146))
(check-eqv? (clear-bit-field 4 13 103713854486608146) (test-clear-bit-field 4 13 103713854486608146))
(check-eqv? (clear-bit-field 79 109 -608462309321751311) (test-clear-bit-field 79 109 -608462309321751311))
(check-eqv? (clear-bit-field 79 13 -608462309321751311) (test-clear-bit-field 79 13 -608462309321751311))
(check-eqv? (clear-bit-field 4 109 -608462309321751311) (test-clear-bit-field 4 109 -608462309321751311))
(check-eqv? (clear-bit-field 4 13 -608462309321751311) (test-clear-bit-field 4 13 -608462309321751311))

0 comments on commit 3ec1e95

Please sign in to comment.