Refactor the project structure.
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-10-11 21:12:10 +03:00
parent 77efa81c54
commit 4d7e9da1d1
15 changed files with 28 additions and 53 deletions
@@ -0,0 +1,86 @@
(ns cipher-analytical-machine.analyzers.caesar-test
(:require
[clojure.test :refer :all]
[cipher-analytical-machine.analyzers.caesar :refer :all]
[cipher-analytical-machine.symbols.frequences :as sf]
[cipher-analytical-machine.analyzers.analyzers :as ca]
[clojure.string :as cs]))
(deftest get-all-texts-test
(testing "There're three text when the text is 'abc' and the set of symbol is 'abc'."
(is (= 3 (count (get-all-texts "abc" "abc")))))
(testing "A pair must have an integer and a string."
(let [pairs (get-all-texts "abc" "abc")
pair (first pairs)]
(is (and (int? (first pair))
(string? (last pair))))))
(testing "There're 27 combinations for a 'Hello World'."
(let [ciphertext "khoorczruog"
symbols "abcdefghijklmnopqrstuvwxyz "]
(is (= 27 (count (get-all-texts ciphertext symbols)))))))
(deftest get-all-scores-test
(testing "There're 27 combinations for a 'Hello World'."
(let [ciphertext "khoorczruog"
symbols "abcdefghijklmnopqrstuvwxyz "
frequences sf/english-letter-frequences
text-pairs (get-all-texts ciphertext symbols)]
(is (= 27 (count (get-all-scores frequences text-pairs)))))))
(deftest get-min-score-pair-test
(testing "If a key is one, then the min score pair is 15."
(let [scores (list [0 20.0] [1 15.0] [2 30.0])
min-score-pair (get-min-score-pair scores)]
(is (= [1 15.0] min-score-pair)))))
(deftest get-key-test
(let [plaintext "hello world"
ciphertext "khoorczruog"
key 3
symbols "abcdefghijklmnopqrstuvwxyz "
frequences sf/english-letter-frequences]
(testing "The plaintext is encrypted with 3 as the key."
(is (= key (get-key ciphertext symbols frequences)))))
(let [; З поеми "Кавказ" Тараса Григоровича Шевченка:
plaintext "Борітеся – поборете, Вам Бог помагає! За вас правда, за вас слава. І воля святая!"
ciphertext "жхчощйшде–ецхжхчйщй,езєуежхиецхуєиєк!емєезєшецчєзїє,емєезєшештєзє.еоезхтдешздщєд!"
key 7
symbols "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя "
frequences sf/ukrainian-letter-frequences]
(testing "The plaintext is encrypted with 3 as the key."
(is (= key (get-key ciphertext symbols frequences))))))
(deftest get-plaintext-test
(let [plaintext "hello world"
ciphertext "khoorczruog"
symbols "abcdefghijklmnopqrstuvwxyz "
frequences sf/english-letter-frequences]
(testing "The plaintext is encrypted with 3 as the key."
(is (= plaintext (get-plaintext ciphertext symbols frequences))))
(testing "The ciphertext is case-insensitive."
(is (= plaintext (get-plaintext "KhoorcZruog" symbols frequences)))))
(let [; З поеми "Кавказ" Тараса Григоровича Шевченка:
plaintext "Борітеся – поборете, Вам Бог помагає! За вас правда, за вас слава. І воля святая!"
ciphertext "жхчощйшде–ецхжхчйщй,езєуежхиецхуєиєк!емєезєшецчєзїє,емєезєшештєзє.еоезхтдешздщєд!"
key 7
symbols "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя "
frequences sf/ukrainian-letter-frequences]
(testing "The ciphertext is case-insensitive."
(is (= (cs/lower-case plaintext)
(get-plaintext ciphertext symbols frequences))))))
(deftest frequency-analizer-get-plaintext-test
(let [plaintext "abc"
ciphertext "bca"
key 1
symbols "abc"
frequences sf/english-letter-frequences]
(testing "The ciphertext is 'bca' and key is 1."
(is (= plaintext
(frequency-analizer-get-plaintext ciphertext symbols frequences))))))
@@ -0,0 +1,45 @@
(ns cipher-analytical-machine.analyzers.language-test
(:require
[clojure.test :refer :all]
[cipher-analytical-machine.analyzers.language :refer :all]
))
(deftest detect-language-test
(testing "Checking the English text"
(is (= "en" (detect-language "This is a sentence that uses English."))))
(testing "Checking the Ukrainian text"
(is (= "uk" (detect-language "Текст, що написаний українською."))))
(testing "Checking a gibberish that uses English letters"
(is (= "lt" (detect-language "dfgjldfjgdfl gjdfg idfjig hdgesr khs e."))))
(testing "Checking a gibberish that uses Ukrainian letters"
(is (= "uk" (detect-language "іаврпшшцді врадів аргів аріл варї йцґ.")))))
(deftest is-language?-test
(testing "Checking the English text"
(is (is-language? "This is a sentence that uses English." "en")))
(testing "Checking the Ukrainian text"
(is (is-language? "Текст, що написаний українською." "uk")))
(testing "Checking a gibberish that uses English letters"
(is (is-language? "dfgjldfjgdfl gjdfg idfjig hdgesr khs e." "lt")))
(testing "Checking a gibberish that uses Ukrainian letters"
(is (is-language? "іаврпшшцді врадів аргів аріл варї йцґ." "uk"))))
(deftest is-nonsense?-test
(testing "Checking the English text"
(is (not (is-nonsense? "This is a sentence that uses English." "en"))))
(testing "Checking the Ukrainian text"
(is (not (is-nonsense? "Текст, що написаний українською." "uk"))))
(testing "Checking a gibberish that uses English letters"
(is (is-nonsense? "dfgjldfjgdfl gjdfg idfjig hdgesr khs e." "en")))
(testing "Checking a gibberish that uses Ukrainian letters"
(is (is-nonsense? "іаврпшшцді івафі лоінїмч йцувіа івапґ." "uk"))))