Skip to content

Commit be2f80f

Browse files
authored
Merge pull request #34 from ryukinix/refactor-tests
refactor tests + write pratt parser tests
2 parents b4f1f1a + 3060802 commit be2f80f

File tree

10 files changed

+144
-123
lines changed

10 files changed

+144
-123
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
21
name: CI
32

43
on: [pull_request]
54

65
jobs:
7-
build:
6+
tests:
87
runs-on: ubuntu-latest
98
steps:
109
- uses: actions/checkout@v2

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@ docker-run: docker-build
2929
docker run --rm -it --network=host $(DOCKER_IMG)
3030

3131
docker-check: docker-build
32-
docker run --rm -t --entrypoint=ros $(DOCKER_IMG) run -s lisp-inference/test -l run-test.lisp
32+
docker run --rm -t --entrypoint=ros $(DOCKER_IMG) run -l run-test.lisp
3333

3434
docker-publish: docker-build
3535
docker tag $(DOCKER_IMG) $(PUBLIC_IMG)
3636
docker push $(PUBLIC_IMG)
3737

38+
deploy: docker-publish
39+
ssh starfox bash /home/lerax/Deploy/logic.sh
40+
3841
.PHONY: check docker-build

lisp-inference.asd

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,18 @@
3838
:pathname "web"
3939
:components ((:file "webapp")))
4040

41-
(asdf:defsystem #:lisp-inference/test
42-
:description "Lisp Inference Test Suit"
41+
(asdf:defsystem #:lisp-inference/tests
42+
:description "Lisp Inference Tests"
4343
:author "Manoel Vilela <[email protected]>"
4444
:license "BSD"
4545
:version "0.2.0"
4646
:serial t
4747
:pathname "t"
4848
:depends-on (:lisp-inference :rove)
49-
:components ((:file "test")))
49+
:components ((:file "tests")
50+
(:file "test-equivalence-rules")
51+
(:file "test-inference-rules")
52+
(:file "test-infix-parsing")
53+
(:file "test-pratt"))
54+
:perform (test-op (o c)
55+
(symbol-call :rove :run c)))

run-test.lisp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(load "fix-quicklisp")
2-
(ql:quickload :lisp-inference/test :silent t)
2+
(ql:quickload :lisp-inference/tests :silent t)
33
(setf rove:*enable-colors* t)
4-
(if (rove:run* "lisp-inference/test")
4+
(if (rove:run :lisp-inference/tests)
55
(sb-ext:exit :code 0)
66
(sb-ext:exit :code 1))

t/test-equivalence-rules.lisp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
(in-package #:lisp-inference/tests/test-equivalence-rules)
2+
3+
(deftest test-equivalence-rules
4+
(testing "== Equivalence rules!"
5+
(ok (equal (de-morgan '(^ p q))
6+
'(~ (v (~ p) (~ q))))
7+
"Equivalence: DE-MORGAN 1")
8+
(ok (equal (de-morgan '(~ (v p q)))
9+
'(^ (~ p) (~ q)))
10+
"Equivalence: DE-MORGAN 2")
11+
12+
(ok (equal (de-morgan '(~ (^ (~ p) (~ q))))
13+
'(v p q))
14+
"Equivalence: DE-MORGAN 3")
15+
16+
(ok (equal (double-negation '(~ (~ p)))
17+
'p)
18+
"Equivalence: DOUBLE-NEGATION 1")
19+
20+
(ok (equal (double-negation 'p)
21+
'p)
22+
"Equivalence: DOUBLE-NEGATION 2")))

t/test-inference-rules.lisp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
(in-package #:lisp-inference/tests/test-inference-rules)
2+
3+
4+
(deftest test-inference-rules
5+
(testing "== Inference rules!"
6+
(ok (equal (modus-ponens '(^ (=> p q) p))
7+
'q)
8+
"Inference: MODUS-PONENS")
9+
10+
(ok (equal (modus-tollens '(^ (=> p q) (~ p)))
11+
'(~ q))
12+
"Inference: MODUS-TOLLENS")
13+
14+
(ok (equal (syllogism-disjunctive '(^ (v p q) (~ p)))
15+
'q)
16+
"Inference: SYLLOGISM-DISJUNCTIVE")
17+
18+
(ok (equal (syllogism-hypothetical '(^ (=> x y) (=> y z)))
19+
'(=> X Z))
20+
"Inference: SYLLOGISM-HYPOTHETICAL")
21+
22+
(ok (equal (addiction 'p 'q)
23+
'(v p q))
24+
"Inference: ADDICTION")
25+
26+
(ok (equal (conjunction '(=> p q) 'p)
27+
'(^ (=> P Q) P))
28+
"Inference: CONJUNCTION")
29+
30+
(ok (equal (absorption '(=> r (^ x y)))
31+
'(=> R (^ R (^ X Y))))
32+
"Inference: ABSORPTION")
33+
34+
(ok (equal (simplification-first '(^ p q))
35+
'p)
36+
"Inference: SIMPLIFICATION FIRST")
37+
38+
(ok (equal (simplification-second '(^ r s))
39+
's)
40+
"Inference: SIMPLIFICATION SECOND")))

t/test-infix-parsing.lisp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(in-package #:lisp-inference/tests/test-infix-parsing)
2+
3+
;; deprecated in favor of pratt parser
4+
(deftest test-infix-parsing
5+
(testing "== Infix Parsing"
6+
(ok (equal (infix-to-prefix '(~ (p v q)))
7+
'(~ (v p q))))
8+
9+
(ok (equal (infix-to-prefix '(p => q))
10+
'(=> p q)))
11+
12+
(ok (equal (infix-to-prefix '((p v q) <=> ((~ p) ^ (~ q))))
13+
'(<=> (v p q)
14+
(^ (~ p)
15+
(~ q)))))))

t/test-pratt.lisp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
(in-package #:lisp-inference/tests/test-pratt)
2+
3+
(deftest test-pratt
4+
(testing "== Pratt Parser"
5+
(ok (equal (parse-logic "p v q")
6+
'(v p q)))
7+
8+
(ok (equal (parse-logic "(p v q)")
9+
'(v p q)))
10+
11+
(ok (equal (parse-logic "p => q ^ r")
12+
'(=> p (^ q r))))
13+
14+
(ok (equal (parse-logic "(p => q) ^ r")
15+
'(^ (=> p q) r)))
16+
17+
(ok (equal (parse-logic "p -> ~ q")
18+
'(-> p (~ q))))
19+
20+
(ok (equal (parse-logic "p [+] (r => s)")
21+
'([+] p (=> r s))))
22+
23+
(ok (equal (parse-logic "~p")
24+
'(~ p)))
25+
))

t/test.lisp

Lines changed: 0 additions & 115 deletions
This file was deleted.

t/tests.lisp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
(defpackage #:lisp-inference/tests/test-equivalence-rules
2+
(:use #:cl
3+
#:lisp-inference
4+
#:rove))
5+
6+
(defpackage #:lisp-inference/tests/test-inference-rules
7+
(:use #:cl
8+
#:lisp-inference
9+
#:rove))
10+
11+
(defpackage #:lisp-inference/tests/test-infix-parsing
12+
(:use #:cl
13+
#:lisp-inference
14+
#:rove))
15+
16+
(defpackage #:lisp-inference/tests/test-pratt
17+
(:use #:cl
18+
#:lisp-inference
19+
#:rove))
20+
21+
(defpackage #:lisp-inference/tests
22+
(:use #:cl)
23+
(:import-from #:lisp-inference/tests/test-equivalence-rules)
24+
(:import-from #:lisp-inference/tests/test-inference-rules)
25+
(:import-from #:lisp-inference/tests/test-infix-parsing)
26+
(:import-from #:lisp-inference/tests/test-pratt))

0 commit comments

Comments
 (0)