Add symbol factories for punctuation, space, defaults symbols.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
(ns cipher-analytical-machine.symbol_factories
|
(ns cipher-analytical-machine.symbol-factories
|
||||||
(:require [clojure.string :as cs])
|
(:require [clojure.string :as cs])
|
||||||
(:gen-class))
|
(:gen-class))
|
||||||
|
|
||||||
@@ -32,3 +32,32 @@
|
|||||||
[]
|
[]
|
||||||
"0123456789")
|
"0123456789")
|
||||||
|
|
||||||
|
(defn punctuation-symbol-factory
|
||||||
|
"Return punctuation symbols"
|
||||||
|
[]
|
||||||
|
".,:;-!?")
|
||||||
|
|
||||||
|
(defn space-symbol-factory
|
||||||
|
"Return punctuation symbols"
|
||||||
|
[]
|
||||||
|
" \t\n")
|
||||||
|
|
||||||
|
(defn default-symbol-factory
|
||||||
|
"Return a default string of symbols for a language"
|
||||||
|
[language-code]
|
||||||
|
(cond
|
||||||
|
(= language-code "en")
|
||||||
|
(str (english-alphabet-factory)
|
||||||
|
(punctuation-symbol-factory)
|
||||||
|
(digit-set-factory)
|
||||||
|
\ )
|
||||||
|
|
||||||
|
(= language-code "uk")
|
||||||
|
(str (ukrainian-alphabet-factory)
|
||||||
|
(punctuation-symbol-factory)
|
||||||
|
(digit-set-factory)
|
||||||
|
\ )
|
||||||
|
|
||||||
|
:else
|
||||||
|
(default-symbol-factory "en")))
|
||||||
|
|
||||||
|
|||||||
@@ -1,46 +1,75 @@
|
|||||||
(ns cipher-analytical-machine.symbol-factories-test
|
(ns cipher-analytical-machine.symbol-factories-test
|
||||||
(:require
|
(:require
|
||||||
[clojure.test :refer :all]
|
[clojure.test :refer :all]
|
||||||
[cipher-analytical-machine.symbol_factories :refer :all]
|
[cipher-analytical-machine.symbol-factories :refer :all]
|
||||||
))
|
))
|
||||||
|
|
||||||
(deftest lower-english-alphabet-factory-test
|
(deftest lower-english-alphabet-factory-test
|
||||||
(let [symbols (lower-english-alphabet-factory)]
|
(let [symbols (lower-english-alphabet-factory)]
|
||||||
(testing "It must have same order"
|
(testing "It must have the same order."
|
||||||
(is (= "abcdefghijklmnopqrstuvwxyz" symbols)))
|
(is (= "abcdefghijklmnopqrstuvwxyz" symbols)))
|
||||||
|
|
||||||
(testing "It must have 26 letters"
|
(testing "It must have 26 letters."
|
||||||
(is (= 26 (count symbols))))))
|
(is (= 26 (count symbols))))))
|
||||||
|
|
||||||
(deftest english-alphabet-factory-test
|
(deftest english-alphabet-factory-test
|
||||||
(let [symbols (english-alphabet-factory)]
|
(let [symbols (english-alphabet-factory)]
|
||||||
(testing "It must have same order"
|
(testing "It must have the same order."
|
||||||
(is (= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" symbols)))
|
(is (= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" symbols)))
|
||||||
|
|
||||||
(testing "It must have 2*26 letters"
|
(testing "It must have 2*26 letters."
|
||||||
(is (= (* 2 26) (count symbols))))))
|
(is (= (* 2 26) (count symbols))))))
|
||||||
|
|
||||||
(deftest lower-ukrainian-alphabet-factory-test
|
(deftest lower-ukrainian-alphabet-factory-test
|
||||||
(let [symbols (lower-ukrainian-alphabet-factory)]
|
(let [symbols (lower-ukrainian-alphabet-factory)]
|
||||||
(testing "It must have same order"
|
(testing "It must have the same order."
|
||||||
(is (= "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя" symbols)))
|
(is (= "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя" symbols)))
|
||||||
|
|
||||||
(testing "It must have 33 letters"
|
(testing "It must have 33 letters."
|
||||||
(is (= 33 (count symbols))))))
|
(is (= 33 (count symbols))))))
|
||||||
|
|
||||||
(deftest ukrainian-alphabet-factory-test
|
(deftest ukrainian-alphabet-factory-test
|
||||||
(let [symbols (ukrainian-alphabet-factory)]
|
(let [symbols (ukrainian-alphabet-factory)]
|
||||||
(testing "It must have same order"
|
(testing "It must have the same order."
|
||||||
(is (= "абвгґдеєжзиіїйклмнопрстуфхцчшщьюяАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ" symbols)))
|
(is (= "абвгґдеєжзиіїйклмнопрстуфхцчшщьюяАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ" symbols)))
|
||||||
|
|
||||||
(testing "It must have 2*33 letters"
|
(testing "It must have 2*33 letters."
|
||||||
(is (= (* 2 33) (count symbols))))))
|
(is (= (* 2 33) (count symbols))))))
|
||||||
|
|
||||||
(deftest digit-set-factory-test
|
(deftest digit-set-factory-test
|
||||||
(let [symbols (digit-set-factory)]
|
(let [symbols (digit-set-factory)]
|
||||||
(testing "It must have same order"
|
(testing "It must have the same order."
|
||||||
(is (= "0123456789" symbols)))
|
(is (= "0123456789" symbols)))
|
||||||
|
|
||||||
(testing "It must have 10 digits"
|
(testing "It must have 10 digits."
|
||||||
(is (= 10 (count symbols))))))
|
(is (= 10 (count symbols))))))
|
||||||
|
|
||||||
|
(deftest punctuation-symbol-factory-test
|
||||||
|
(let [symbols (punctuation-symbol-factory)]
|
||||||
|
(testing "It must have the same order."
|
||||||
|
(is (= ".,:;-!?" symbols)))
|
||||||
|
|
||||||
|
(testing "It must have 7 symbols."
|
||||||
|
(is (= 7 (count symbols))))))
|
||||||
|
|
||||||
|
(deftest space-symbol-factory-test
|
||||||
|
(let [symbols (space-symbol-factory)]
|
||||||
|
(testing "It must have the same order."
|
||||||
|
(is (= " \t\n" symbols)))
|
||||||
|
|
||||||
|
(testing "It must have 3 symbols."
|
||||||
|
(is (= 3 (count symbols))))))
|
||||||
|
|
||||||
|
(deftest default-symbol-factory-test
|
||||||
|
(testing "If language code is 'en', then it must have symbols."
|
||||||
|
(let [symbols (default-symbol-factory "en")]
|
||||||
|
(is (= 70 (count symbols)))))
|
||||||
|
|
||||||
|
(testing "If language code is 'uk', then it must have symbols."
|
||||||
|
(let [symbols (default-symbol-factory "uk")]
|
||||||
|
(is (= 84 (count symbols)))))
|
||||||
|
|
||||||
|
(testing "If language code is unidentified, then it must have the 'en'."
|
||||||
|
(let [symbols (default-symbol-factory "Maybe a code")]
|
||||||
|
(is (= 70 (count symbols))))))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user