summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsko Nõmm <asko@bien.ee>2022-04-22 22:09:09 +0300
committerAsko Nõmm <asko@bien.ee>2022-04-22 22:09:09 +0300
commit2b530b7c4e53596ce17e24f3fab42ab2f3c52ba8 (patch)
tree8fae8a6f5def201b24c62c10e83df3b6ccb942fb
parentc3cbae915e1858c2e0b4c013205753fd6e1f548e (diff)
Implement tests for correctors
-rw-r--r--src/clarktown/correctors/code_block.clj24
-rw-r--r--test/clarktown/correctors/atx_heading_block_test.clj30
-rw-r--r--test/clarktown/correctors/code_block_test.clj37
3 files changed, 79 insertions, 12 deletions
diff --git a/src/clarktown/correctors/code_block.clj b/src/clarktown/correctors/code_block.clj
index e767390..fcda19b 100644
--- a/src/clarktown/correctors/code_block.clj
+++ b/src/clarktown/correctors/code_block.clj
@@ -5,23 +5,23 @@
(defn empty-line-above?
[lines line index]
- (and (= (string/trim line) "```")
- (> index 0)
- (->> (take index lines)
- (filter #(= (string/trim %) "```"))
- count
- odd?)
- (not (= (-> (nth lines (- index 1))
- string/trim) ""))))
+ (let [occurences (->> (take index lines)
+ (filter #(string/starts-with? (string/trim %) "```"))
+ count)]
+ (and (string/starts-with? (string/trim line) "```")
+ (> index 0)
+ (even? occurences)
+ (not (= (-> (nth lines (- index 1))
+ string/trim) "")))))
(defn empty-line-below?
[lines line index]
- (and (= (string/trim line) "```")
+ (and (string/starts-with? (string/trim line) "```")
(< index (- (count lines) 1))
(->> (take index lines)
- (filter #(= (string/trim %) "```"))
+ (filter #(string/starts-with? (string/trim %) "```"))
count
- even?)
+ odd?)
(not (= (-> (nth lines (+ index 1))
- string/trim) "")))) \ No newline at end of file
+ string/trim) ""))))
diff --git a/test/clarktown/correctors/atx_heading_block_test.clj b/test/clarktown/correctors/atx_heading_block_test.clj
new file mode 100644
index 0000000..3ece304
--- /dev/null
+++ b/test/clarktown/correctors/atx_heading_block_test.clj
@@ -0,0 +1,30 @@
+(ns clarktown.correctors.atx-heading-block-test
+ (:require
+ [clojure.test :refer [deftest testing is]]
+ [clarktown.correctors.atx-heading-block :as corrector]))
+
+
+(deftest atx-heading-block-corrector
+ (testing "Empty line above"
+ (let [line "# Hello"
+ lines ["Some text goes here" line]
+ index 1]
+ (is (true? (corrector/empty-line-above? lines line index)))))
+
+ (testing "No empty line above"
+ (let [line "# Hello"
+ lines ["Some text goes here" "\n" line]
+ index 2]
+ (is (false? (corrector/empty-line-above? lines line index)))))
+
+ (testing "Empty line below"
+ (let [line "# Hello"
+ lines [line "Some text goes here"]
+ index 0]
+ (is (true? (corrector/empty-line-below? lines line index)))))
+
+ (testing "No empty line below"
+ (let [line "# Hello"
+ lines [line "\n" "Some text goes here"]
+ index 0]
+ (is (false? (corrector/empty-line-below? lines line index))))))
diff --git a/test/clarktown/correctors/code_block_test.clj b/test/clarktown/correctors/code_block_test.clj
new file mode 100644
index 0000000..16711da
--- /dev/null
+++ b/test/clarktown/correctors/code_block_test.clj
@@ -0,0 +1,37 @@
+(ns clarktown.correctors.code-block-test
+ (:require
+ [clojure.test :refer [deftest testing is]]
+ [clarktown.correctors.code-block :as corrector]))
+
+
+(deftest code-block-corrector
+ (testing "Empty line above"
+ (let [line "```clojure"
+ lines ["Some text goes here" line "some code here" "```"]
+ index 1]
+ (is (true? (corrector/empty-line-above? lines line index)))))
+
+ (testing "No empty line above"
+ (let [line "```"
+ lines ["Some text goes here" "\n" line "some code" "```"]
+ index 2]
+ (is (false? (corrector/empty-line-above? lines line index)))))
+
+ (testing "Empty line below"
+ (let [line "```"
+ lines ["Some text goes here" line "some code" line "some text"]
+ index 3]
+ (is (true? (corrector/empty-line-below? lines line index)))))
+
+ (testing "No empty line below"
+ (let [line "```"
+ lines ["Some text goes here" line "some code" line "\n" "some text"]
+ index 3]
+ (is (false? (corrector/empty-line-below? lines line index)))))
+
+ (testing "No empty line below when ending with code block"
+ (let [line "```"
+ lines ["Some text goes here" line "some code" line]
+ index 3]
+ (is (false? (corrector/empty-line-below? lines line index))))))
+