* Add tests for markdown-clj and tools.namespace
See comment for why only one markdown test could be run.
Closes #1069 and #1064
* Convert 10 test libs using add-libtest
Also improved add-libtest to only require maven artifact
and rely on clojars for getting git-url most of the time
* Convert 8 more test libs using add-libtest
Also updated table and added comment for newline test
* Fix doric test
* Disable tools.namespace test that fails on windows
* Added dozen manual test libs and converted 2 test libs
add-libtest.clj supports manually-added and test-directories options
* Converts last tests to test namespaces and write libraries.csv
* Add a number of library tests from projects.md
Also add more docs around adding test libs and tweak add script
* Use :sha for gitlib and older clojure cli
* Revert "Use :sha for gitlib and older clojure cli"
This reverts commit c663ab8368.
* Fix and disable failing tests
Disabled tests that fail consistently and fixed windows one
39 lines
1.4 KiB
Clojure
39 lines
1.4 KiB
Clojure
(ns lambdaisland.regal.spec-gen-test
|
|
(:require [clojure.spec.alpha :as s]
|
|
[clojure.spec.gen.alpha :as spec-gen]
|
|
[clojure.test :refer [deftest is are testing run-tests]]
|
|
[clojure.test.check.clojure-test :refer [defspec]]
|
|
[clojure.test.check.generators :as gen]
|
|
[clojure.test.check.properties :as prop]
|
|
[lambdaisland.regal :as regal]
|
|
[lambdaisland.regal.parse :as parse]
|
|
[lambdaisland.regal.spec-alpha]))
|
|
|
|
(def form-gen (s/gen ::regal/form))
|
|
(def canonical-form-gen (gen/fmap regal/normalize (s/gen ::regal/form)))
|
|
|
|
(defspec generated-forms-can-be-converted 100
|
|
(prop/for-all [regal form-gen]
|
|
(try
|
|
(regal/regex regal)
|
|
(catch Exception _
|
|
false))))
|
|
|
|
(defn- round-trip? [form]
|
|
(try
|
|
(= form (parse/parse (regal/regex form)))
|
|
(catch Exception _ false)))
|
|
|
|
(defspec round-trip-property 100
|
|
(prop/for-all* [canonical-form-gen] round-trip?))
|
|
|
|
(deftest round-trip-test
|
|
(is (round-trip? [:cat " " [:class "&& "]]))
|
|
(is (round-trip? [:class " " [" " "["]]))
|
|
(is (round-trip? [:ctrl "A"]))
|
|
(is (round-trip? [:class " - "]))
|
|
(is (round-trip? [:alt " " [:capture " " :escape]]))
|
|
(is (round-trip? :whitespace))
|
|
(is (round-trip? [:? [:? "x"]]))
|
|
(is (round-trip? [:cat " " [:class " " :non-whitespace]]))
|
|
(is (round-trip? [:cat "-" [:repeat [:repeat "x" 0] 0]])))
|