Add the default frequency factory.
continuous-integration/drone/push Build is passing Details

dev 0.9.7
KKlochko 2 years ago
parent fcae272944
commit ddfd5c473d

@ -9,7 +9,8 @@
(let [analyzer (:analyzer options) (let [analyzer (:analyzer options)
message (:message options) message (:message options)
symbols (:symbols options) symbols (:symbols options)
frequencies symbol-frequencies/english-letter-frequencies] frequencies (-> (get options :language "en")
(symbol-frequencies/default-frequency-factory))]
(cond (cond
(= analyzer "Chi^2") (= analyzer "Chi^2")
(caesar-analyzers/get-plaintext message symbols frequencies) (caesar-analyzers/get-plaintext message symbols frequencies)

@ -77,3 +77,16 @@
\ 0.138 \ 0.138
}) })
(defn default-frequency-factory
"Returns a default map of letter frequencies for a language"
[language-code]
(cond
(= language-code "en")
english-letter-frequencies
(= language-code "uk")
ukrainian-letter-frequencies
:else
english-letter-frequencies))

@ -9,3 +9,13 @@
(is (= "etaoinsrhldcumfpgwybvkxjqz" (is (= "etaoinsrhldcumfpgwybvkxjqz"
(map-to-string symbol-map)))))) (map-to-string symbol-map))))))
(deftest default-frequency-factory-test
(testing "Factory supports languages: English (en), Ukrainian (uk). If language code is unidentified, then it must have the 'en'."
(are [language-code expected-map-size]
(->> (default-frequency-factory language-code)
count
(= expected-map-size))
"en" 26
"uk" 34
"Maybe a code" 26)))

Loading…
Cancel
Save