File: spec_test.clj

package info (click to toggle)
clj-time-clojure 0.15.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 312 kB
  • sloc: makefile: 24; sh: 13
file content (45 lines) | stat: -rw-r--r-- 2,077 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
(ns clj-time.spec-test
  (:require [clojure.test :refer [deftest is]]
            [clojure.spec.alpha :as spec]
            [clojure.spec.gen.alpha :as gen]
            [clj-time.core :refer [before?
                                   date-time
                                   local-date local-date-time]]
            [clj-time.types :as types]
            [clj-time.spec :as ts]))

(deftest test-spec-defs
  (is (spec/valid? ::ts/date-time (date-time 2018 8 22 7 12 58)))
  (is (not (spec/valid? ::ts/local-date-time (date-time 2018 8 22 7 12 58))))
  (is (not (spec/valid? ::ts/local-date (date-time 2018 8 22 7 12 58))))

  (is (not (spec/valid? ::ts/date-time (local-date-time 2018 8 22 7 12 58))))
  (is (spec/valid? ::ts/local-date-time (local-date-time 2018 8 22 7 12 58)))
  (is (not (spec/valid? ::ts/local-date (local-date-time 2018 8 22 7 12 58))))

  (is (not (spec/valid? ::ts/date-time (local-date 2018 8 22))))
  (is (not (spec/valid? ::ts/local-date-time (local-date 2018 8 22))))
  (is (spec/valid? ::ts/local-date (local-date 2018 8 22))))

(deftest test-generators
  (is (every? types/date-time? (gen/sample (spec/gen ::ts/date-time))))
  (is (every? types/local-date-time? (gen/sample (spec/gen ::ts/local-date-time))))
  (is (every? types/local-date? (gen/sample (spec/gen ::ts/local-date))))

  (is (every? #(and (before? % (date-time 2031 1 1))
                    (before? (date-time 2010 12 31) %))
              (gen/sample (spec/gen ::ts/date-time)))))


(deftest test-period-generators
  ; These generators are meant to be used with the ts/*period* dynamic var.
  ; See test-generator-with-custom-period
  (is (every? int? (gen/sample (spec/gen ::ts/past))))
  (is (every? int? (gen/sample (spec/gen ::ts/past-and-future))))
  (is (every? int? (gen/sample (spec/gen ::ts/future)))))

(deftest test-generator-with-custom-period
  (binding [ts/*period* #(spec/gen ::ts/past)]
    (is (every? #(and (before? % (date-time 2011 1 1))
                      (before? (date-time 2000 12 31) %))
                (gen/sample (spec/gen ::ts/date-time))))))