Skip to content

Assert.IsAlmost

Name - Description Default Type
<input> The input can be of any number type or a sequence of such types. FloatFloat2Float3Float4IntInt2Int3Int4Int8Int16[Any]
<output> The output will be the input (passthrough). Any
Value The value to test against for almost equality. none FloatFloat2Float3Float4IntInt2Int3Int4Int8Int16[Any]Var(Float Float2 Float3 Float4 Int Int2 Int3 Int4 Int8 Int16 [Any])
Abort If we should abort the process on failure. false Bool
Threshold The smallest difference to be considered equal. Should be greater than zero. 1.19209e-07 FloatInt

This assertion is used to check whether the input is almost equal to a given value.

Details

For non-decimal values (e.g. Int), :Epsilon is ignored and this shard acts as Assert.Is.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
;; :Break = `true`, assertion true
;; => log no errors and don't abort program
8
(Assert.IsAlmost
 ;:Value
 7
 ;:Break
 true
 ;:Epsilon
 1)

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
;; :Break = `true`, assertion false
;; => abort the program
7.0
(Maybe
 (Assert.IsAlmost
  ;:Value
  8.0
  ;:Break
  ;; uncomment next line to abort program on run
  ;true
  ))

 

1
2
3
4
5
6
7
8
;; :Break = `false`, assertion true
;; => log no errors and don't abort program
8.0
(Assert.IsAlmost
 ;:Value
 8.0
 ;:Break
 false)

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
;; :Break = `false`, assertion false
;; => log assertion error but don't abort program
8.0
(Maybe
 (Assert.IsAlmost
  ;:Value
  7.999
  ;:Break
  false
  ;:Epsilon
  0.0001))