File: test-driver.lisp

package info (click to toggle)
acl2 8.6%2Bdfsg-3
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 1,138,276 kB
  • sloc: lisp: 17,818,294; java: 125,359; python: 28,122; javascript: 23,458; cpp: 18,851; ansic: 11,569; perl: 7,678; xml: 5,591; sh: 3,978; makefile: 3,840; ruby: 2,633; yacc: 1,126; ml: 763; awk: 295; csh: 233; lex: 197; php: 178; tcl: 49; asm: 23; haskell: 17
file content (83 lines) | stat: -rw-r--r-- 3,164 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
; Copyright (C) 2016, Regents of the University of Texas
; Marijn Heule, Warren A. Hunt, Jr., and Matt Kaufmann
; License: A 3-clause BSD license.  See the LICENSE file distributed with ACL2.

; Test driver for the lrat checker.

; (depends-on "../tests/example-4-vars.cnf")
; (depends-on "../tests/example-4-vars.lrat")
; (depends-on "../tests/uuf-100-1.cnf")
; (depends-on "../tests/uuf-100-1.lrat")
; (depends-on "../tests/uuf-100-2.cnf")
; (depends-on "../tests/uuf-100-2.lrat")
; (depends-on "../tests/uuf-100-3.cnf")
; (depends-on "../tests/uuf-100-3.lrat")
; (depends-on "../tests/uuf-100-4.cnf")
; (depends-on "../tests/uuf-100-4.lrat")
; (depends-on "../tests/uuf-100-5.cnf")
; (depends-on "../tests/uuf-100-5.lrat")
; (depends-on "../tests/uuf-100-5-partial.lrat")
; (depends-on "../tests/uuf-30-1.cnf")
; (depends-on "../tests/uuf-30-1.lrat")

(in-package "LRAT")
(include-book "lrat-parser")

; Test driver

(program)
(set-state-ok t)

(defun main-test-fn (doublets dir okp chan state)
  (cond
   ((endp doublets)
    (pprogn (fms "OVERALL RESULT: ~s0~|~%"
                 (list (cons #\0 (if okp "success" "FAILURE")))
                 chan state nil)
            (value okp)))
   (t (let* ((d (car doublets))
             (cnf (concatenate 'string dir (car d)))
             (lrat (concatenate 'string dir (cadr d)))
             (incomplete-okp (caddr d)))
        (pprogn
         (fms "Starting ~x0.~|"
              (list (cons #\0 `(lrat-verify-proof ,cnf ,lrat ,@(cddr d))))
              chan state nil)
         (er-let* ((val (lrat-verify-proof cnf lrat incomplete-okp)))
           (pprogn
            (princ$ "Result: " chan state)
            (princ$ (if val "success" "FAILURE") chan state)
            (newline chan state)
            (main-test-fn (cdr doublets) dir (and val okp) chan state))))))))

(defmacro main-test (doublets &optional (dir '""))

; This should be run in the tests/ directory, or else in the directory dir
; relative to the current directory (e.g., "../tests" or "../tests/").

  (declare (xargs :guard (stringp dir))) ; partial guard
  (let ((dir (if (and (not (equal dir ""))
                      (not (eql (char dir (1- (length dir)))
                                #\/)))
                 (concatenate 'string dir "/")
               dir)))
    `(main-test-fn ',doublets ',dir t (standard-co state) state)))

(make-event
 (er-let* ((okp (main-test
                 (("example-4-vars.cnf" "example-4-vars.lrat")
                  ("example-5-vars.cnf" "example-5-vars.lrat")
                  ("uuf-100-1.cnf" "uuf-100-1.lrat")
                  ("uuf-100-2.cnf" "uuf-100-2.lrat")
                  ("uuf-100-3.cnf" "uuf-100-3.lrat")
                  ("uuf-100-4.cnf" "uuf-100-4.lrat")
                  ("uuf-100-5.cnf" "uuf-100-5.lrat")
                  ("uuf-100-5.cnf" "uuf-100-5-partial.lrat" t) ; partial proof
                  ("uuf-30-1.cnf" "uuf-30-1.lrat")
                  ("uuf-50-2.cnf" "uuf-50-2.lrat")
                  ("uuf-50-3.cnf" "uuf-50-3.lrat"))
                 "../tests")))
   (if okp
       (value '(value-triple :success))
     (er soft 'top
         "MAIN-TEST failed!"))))