Public Vars

Back

bigdec (clj)

(source)

function

(bigdec x)
Coerce to BigDecimal

Examples

typedclojure/typedclojure
(ns ^:no-doc typed.ann.clojure
  "Type annotations for the base Clojure distribution."
  #?(:cljs (:require-macros [typed.ann-macros.clojure :as macros]))
  (:require [clojure.core :as cc]
            [typed.clojure :as t]
            #?(:clj [typed.ann-macros.clojure :as macros])
            #?(:clj typed.ann.clojure.jvm) ;; jvm annotations
            #?(:clj clojure.core.typed))
  #?(:clj
     (:import (clojure.lang PersistentHashSet PersistentList
                            APersistentMap #_IPersistentCollection
                            #_ITransientSet
                            IRef)
              (java.util Comparator Collection))))

;coercions
#?@(:cljs [] :default [
cc/bigdec [(t/U t/Str t/Num) :-> BigDecimal]
cc/bigint [(t/U t/Str t/Num) :-> clojure.lang.BigInt]
cc/biginteger [(t/U t/Str t/Num) :-> java.math.BigInteger]
])
cc/boolean [t/Any :-> t/Bool]
cc/parse-boolean [t/Str :-> (t/Option t/Bool)]
cc/byte [(t/U Character t/Num) :-> Byte]
#?@(:cljs [
cc/char [(t/U t/Str t/Num) :-> t/Str]
] :default [
cc/char [(t/U Character t/Num) :-> Character]
])
cc/double [t/Num :-> #?(:cljs t/Num :default Double)]
cc/parse-double [t/Str :-> (t/Option #?(:cljs t/Num :default Double))]
fluree/ledger
(ns fluree.db.ledger.docs.schema.type-change
  (:require [clojure.test :refer :all]))
;
;
;(deftest int-type-predicate-change-test*
;  (testing "Test allowed type conversions")
;
;  ;; a nil response to predicate-change-error means no problems.
;  ;; else it returns a map of the error, with a :status of 400
;
;    ;; valid: int -> long
;    (is (empty? (clojure.core.async/<!! (predicate-change-error {0 {:type {:old :int :new :long}}} {}))))
;
;    ;; valid: int -> instant
;    (is (empty? (clojure.core.async/<!! (predicate-change-error {0 {:type {:old :int :new :instant}}} {}))) )
;
;    ;; valid: int -> bigint
;    (is (empty? (clojure.core.async/<!! (predicate-change-error  {0 {:type {:old :int :new :bigint}}} {}))))
;
;    ;; valid: int -> double
;    (is (empty? (clojure.core.async/<!! (predicate-change-error  {0 {:type {:old :int :new :double}}} {}))))
;
;    ;; valid: int -> bigdec
;    (is (empty? (clojure.core.async/<!! (predicate-change-error  {0 {:type {:old :int :new :bigdec}}} {}))))
;
;    ;; invalid: int -> string
;    (is (nil? (clojure.core.async/<!! (predicate-change-error {0 {:type {:old :int :new :string}}} {})))))
;


;;(deftest long-type-predicate-change-test*
;;  (testing "Test allowed type conversions from long")
;;  ;; invalid: long -> int
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :long :new :int}}} {}))))
;;
;;  ;; valid: long -> bigint
;;  (is (nil? (predicate-change-error {0 {:type {:old :long :new :bigint}}} {})))
;;
;;  ;; valid: long -> double
;;  (is (nil? (predicate-change-error {0 {:type {:old :long :new :double}}} {})))
;;
;;  ;; valid: long -> bigdec
;;  (is (nil? (predicate-change-error {0 {:type {:old :long :new :bigdec}}} {})))
;;
;;  ;; invalid: long -> string
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :long :new :string}}} {}))))
;;
;;  ;; valid: long -> instant
;;  (is (nil? (predicate-change-error {0 {:type {:old :long :new :instant}}} {}))))
;;
;;(deftest type-predicate-change-test*
;;  (testing "Test other allowed type conversions")
;;  ;; invalid: bigint -> anything
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :bigint :new :anything}}} {}))))
;;
;;  ;; invalid: string -> anything
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :string :new :anything}}} {}))))
;;
;;  ;; invalid: bigdec -> anything
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :bigdec :new :anything}}} {}))))
;;
;;  ;; valid: double -> bigdec
;;  (is (nil? (predicate-change-error {0 {:type {:old :double :new :bigdec}}} {})))
;;
;;  ;; invalid: double -> randomLetters
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :double :new :afdhdfgdf}}} {}))))
;;
;;  ;; valid: instant -> long
;;  (is (nil? (predicate-change-error {0 {:type {:old :instant :new :long}}} {})))
;;
;;  ;; valid: instant -> bigint
;;  (is (nil? (predicate-change-error {0 {:type {:old :instant :new :bigint}}} {})))
;;
;;  ;; invalid: instant -> string
;;  (is (= 400 (:status (predicate-change-error {0 {:type {:old :instant :new :string}}} {})))))
;;
;;
;;(deftest multi-predicate-change-test*
;;  (testing "Test adding and changing :multi predicate")
;;  ;; Valid: multi -> false in new _predicate
;;  (is (nil? (predicate-change-error {0 {:new? true :multi {:new false :old nil}}} {})))
;;
;;  ;; Valid: multi -> true in new _predicate
;;  (is (nil? (predicate-change-error {0 {:new? true :multi {:new true :old nil}}} {})))
;;
;;  ;; Valid: multi -> true in existing _predicate, from multi = false
;;  (is (nil? (predicate-change-error {0 {:new? false :multi {:new true :old false}}} {})))
;;
;;  ;; Valid: multi -> true in existing _predicate, from multi = nil
;;  (is (nil? (predicate-change-error {0 {:new? false :multi {:new true :old nil}}} {})))
;;
;;  ;; invalid: multi -> false in existing _predicate
;;  (is (thrown-with-msg? clojure.lang.ExceptionInfo #"Cannot convert an _predicate from multi-cardinality to single-cardinality."
;;                        (predicate-change-error {0 {:multi {:new false :old true}}} {} true))))
;;
;;(deftest unique-predicate-change-test*
;;  (testing "Test adding and changing :unique predicate")
;;
;;  ;; invalid: unique -> true in existing _predicate
;;  (is (thrown-with-msg? clojure.lang.ExceptionInfo #"Cannot convert an _predicate from non-unique to unique."
;;                        (predicate-change-error {0 {:new? false, :unique {:new true}}} {} true)))
;;
;;  ;; Valid unique -> true in new predicate
;;  (is (nil? (predicate-change-error {0 {:new? true :unique {:new true :old nil}}} {})))
;;
;;  ;; Valid unique -> false in new predicate
;;  (is (nil? (predicate-change-error {0 {:new? true :unique {:new false :old nil}}} {})))
;;
;;  ;; Valid unique -> false in existing predicate
;;  (is (nil? (predicate-change-error {0 {:new? true :unique {:new false :old true}}} {}))))
;;
;;(deftest component-predicate-change-test*
;;  (testing "Test adding and changing :unique predicate")
;;
;;  ;;; invalid: component -> true in existing _ predicate, from false
;;  (is (thrown-with-msg? clojure.lang.ExceptionInfo #"Cannot convert an _predicate from a component to a non-component."
;;                        (predicate-change-error {0 {:new? false :component {:old false :new true}}} {} true)))
;;
;;  ;;; invalid: component -> true in existing _ predicate, from nil
;;  (is (thrown-with-msg? clojure.lang.ExceptionInfo #"Cannot convert an _predicate from a component to a non-component."
;;                        (predicate-change-error {0 {:new? false :component {:old nil :new true}}} {} true)))
;;
;;  ;;; invalid: component -> true, when type != ref in new _ predicate
;;  (is (thrown-with-msg? clojure.lang.ExceptionInfo #"A component _predicate must be of type \"ref.\""
;;                        (predicate-change-error {0 {:new? true :type {:new "int"} :component {:old nil :new true}}} {} true)))
;;
;;  ;; Valid component -> true, when type = ref in new _ predicate
;;  (is (nil? (predicate-change-error {0 {:new? true :type {:new :ref} :component {:old nil :new true}}} {} true))))
;;