More Related Content Similar to Clojure Example Functions and Tests Similar to Clojure Example Functions and Tests (20) More from Jackson dos Santos Olveira More from Jackson dos Santos Olveira (20) Clojure Example Functions and Tests7. dotimes
The same thing in java
Vector v = new Vector();
v.add(0);
v.add(1);
v.add(2);
for (int i = 0; i < v.size(); i++) {
System.out.println(v.get(i));
}
8. Car tax function
(defn verify_car_speed [car]
(if (> 100 (get car :cur-speed)) true
(do
(def extraTax (* (- (get car :cur-speed) 100) 20))
(assoc car :tax (+ extraTax 10))
)
)
)
9. Car tax tests
(deftest test-car-speed-with-less-than-100
(def carToTest (struct car "FUCA" "PASSANGER" 99 1))
(def carReturned (verify_car_speed carToTest))
(is (= nil (get carReturned :tax)))
)
(deftest test-car-speed-with-more-than-100
(def carToTest (struct car "FUCA" "PASSANGER" 101 1))
(def carReturned (verify_car_speed carToTest))
(is (= 30 (get carReturned :tax)))
)
10. Bank functions
(defn bank-deposit [bank-account value-to-deposit]
(def value-to-credit (+ (get @bank-account :value) value-to-deposit))
(dosync
(ref-set bank-account (assoc @bank-account :value value-to-credit))
)
)
(defn bank-withdraw[bank-account value-to-withdraw]
(def value-to-dec (- (get @bank-account :value) value-to-withdraw))
(dosync
(ref-set bank-account (assoc @bank-account :value value-to-dec))
)
)
(defn bank-assesment[bank-account]
(str "Client " (get @bank-account :name)" has " (get @bank-account :value) " in his account")
)
11. Bank tests
(deftest test-deposit-100
(def client-rich (ref (struct bank-account "Eike Batista" 100.02M)))
(bank-deposit client-rich 100)
(is (= 200.02 (get @client-rich :value)))
)
(deftest test-withdraw-99.03
(def client-poor (ref (struct bank-account "Jackson" 224.07M)))
(bank-withdraw client-poor 99.03M)
(is (= 125.04 (get @client-poor :value)))
)
(deftest test-assesment
(def rich-client (ref (struct bank-account "Silvio Santos" 1000)))
(bank-deposit rich-client 100)
(is (= "Client Silvio Santos has 1100 in his account" (bank-assesment rich-client)))
)