specsuite: Tests for the expression language operators
This commit is contained in:
parent
48fbad7bf4
commit
ee38c67330
68
specsuite/tests/expressions/operators.hcl
Normal file
68
specsuite/tests/expressions/operators.hcl
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
equality "==" {
|
||||||
|
exactly = "a" == "a"
|
||||||
|
not = "a" == "b"
|
||||||
|
|
||||||
|
type_mismatch_number = "1" == 1
|
||||||
|
type_mismatch_bool = "true" == true
|
||||||
|
}
|
||||||
|
equality "!=" {
|
||||||
|
exactly = "a" != "a"
|
||||||
|
not = "a" != "b"
|
||||||
|
|
||||||
|
type_mismatch_number = "1" != 1
|
||||||
|
type_mismatch_bool = "true" != true
|
||||||
|
}
|
||||||
|
|
||||||
|
inequality "<" {
|
||||||
|
lt = 1 < 2
|
||||||
|
gt = 2 < 1
|
||||||
|
eq = 1 < 1
|
||||||
|
}
|
||||||
|
inequality "<=" {
|
||||||
|
lt = 1 <= 2
|
||||||
|
gt = 2 <= 1
|
||||||
|
eq = 1 <= 1
|
||||||
|
}
|
||||||
|
inequality ">" {
|
||||||
|
lt = 1 > 2
|
||||||
|
gt = 2 > 1
|
||||||
|
eq = 1 > 1
|
||||||
|
}
|
||||||
|
inequality ">=" {
|
||||||
|
lt = 1 >= 2
|
||||||
|
gt = 2 >= 1
|
||||||
|
eq = 1 >= 1
|
||||||
|
}
|
||||||
|
|
||||||
|
arithmetic {
|
||||||
|
add = 2 + 3.5
|
||||||
|
add_big = 3.14159265358979323846264338327950288419716939937510582097494459 + 1
|
||||||
|
sub = 3.5 - 2
|
||||||
|
sub_neg = 2 - 3.5
|
||||||
|
mul = 2 * 4.5
|
||||||
|
div = 1 / 10
|
||||||
|
mod = 11 % 5
|
||||||
|
mod_frac = 11 % 5.1
|
||||||
|
}
|
||||||
|
|
||||||
|
logical_binary "&&" {
|
||||||
|
tt = true && true
|
||||||
|
ft = false && true
|
||||||
|
tf = true && false
|
||||||
|
ff = false && false
|
||||||
|
}
|
||||||
|
logical_binary "||" {
|
||||||
|
tt = true || true
|
||||||
|
ft = false || true
|
||||||
|
tf = true || false
|
||||||
|
ff = false || false
|
||||||
|
}
|
||||||
|
logical_unary "!" {
|
||||||
|
t = !true
|
||||||
|
f = !false
|
||||||
|
}
|
||||||
|
|
||||||
|
conditional {
|
||||||
|
t = true ? "a" : "b"
|
||||||
|
f = false ? "a" : "b"
|
||||||
|
}
|
57
specsuite/tests/expressions/operators.hcldec
Normal file
57
specsuite/tests/expressions/operators.hcldec
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
object {
|
||||||
|
block_map "equality" {
|
||||||
|
labels = ["operator"]
|
||||||
|
|
||||||
|
object {
|
||||||
|
attr "exactly" { type = any }
|
||||||
|
attr "not" { type = any }
|
||||||
|
attr "type_mismatch_number" { type = any }
|
||||||
|
attr "type_mismatch_bool" { type = any }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
block_map "inequality" {
|
||||||
|
labels = ["operator"]
|
||||||
|
|
||||||
|
object {
|
||||||
|
attr "lt" { type = any }
|
||||||
|
attr "gt" { type = any }
|
||||||
|
attr "eq" { type = any }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
block "arithmetic" {
|
||||||
|
object {
|
||||||
|
attr "add" { type = any }
|
||||||
|
attr "add_big" { type = any }
|
||||||
|
attr "sub" { type = any }
|
||||||
|
attr "sub_neg" { type = any }
|
||||||
|
attr "mul" { type = any }
|
||||||
|
attr "div" { type = any }
|
||||||
|
attr "mod" { type = any }
|
||||||
|
attr "mod_frac" { type = any }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
block_map "logical_binary" {
|
||||||
|
labels = ["operator"]
|
||||||
|
|
||||||
|
object {
|
||||||
|
attr "tt" { type = any }
|
||||||
|
attr "ft" { type = any }
|
||||||
|
attr "tf" { type = any }
|
||||||
|
attr "ff" { type = any }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
block_map "logical_unary" {
|
||||||
|
labels = ["operator"]
|
||||||
|
|
||||||
|
object {
|
||||||
|
attr "t" { type = any }
|
||||||
|
attr "f" { type = any }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
block "conditional" {
|
||||||
|
object {
|
||||||
|
attr "t" { type = any }
|
||||||
|
attr "f" { type = any }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
109
specsuite/tests/expressions/operators.t
Normal file
109
specsuite/tests/expressions/operators.t
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
result = {
|
||||||
|
equality = {
|
||||||
|
"==" = {
|
||||||
|
exactly = true
|
||||||
|
not = false
|
||||||
|
type_mismatch_number = false
|
||||||
|
type_mismatch_bool = false
|
||||||
|
}
|
||||||
|
"!=" = {
|
||||||
|
exactly = false
|
||||||
|
not = true
|
||||||
|
type_mismatch_number = true
|
||||||
|
type_mismatch_bool = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inequality = {
|
||||||
|
"<" = {
|
||||||
|
lt = true
|
||||||
|
gt = false
|
||||||
|
eq = false
|
||||||
|
}
|
||||||
|
"<=" = {
|
||||||
|
lt = true
|
||||||
|
gt = false
|
||||||
|
eq = true
|
||||||
|
}
|
||||||
|
">" = {
|
||||||
|
lt = false
|
||||||
|
gt = true
|
||||||
|
eq = false
|
||||||
|
}
|
||||||
|
">=" = {
|
||||||
|
lt = false
|
||||||
|
gt = true
|
||||||
|
eq = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arithmetic = {
|
||||||
|
add = 5.5
|
||||||
|
add_big = 4.14159265358979323846264338327950288419716939937510582097494459
|
||||||
|
sub = 1.5
|
||||||
|
sub_neg = -1.5
|
||||||
|
mul = 9
|
||||||
|
div = 0.1
|
||||||
|
mod = 1
|
||||||
|
mod_frac = 0.8000000000000000002
|
||||||
|
}
|
||||||
|
logical_binary = {
|
||||||
|
"&&" = {
|
||||||
|
tt = true
|
||||||
|
tf = false
|
||||||
|
ft = false
|
||||||
|
ff = false
|
||||||
|
}
|
||||||
|
"||" = {
|
||||||
|
tt = true
|
||||||
|
tf = true
|
||||||
|
ft = true
|
||||||
|
ff = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logical_unary = {
|
||||||
|
"!" = {
|
||||||
|
t = false
|
||||||
|
f = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
conditional = {
|
||||||
|
t = "a"
|
||||||
|
f = "b"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result_type = object({
|
||||||
|
equality = map(object({
|
||||||
|
exactly = bool
|
||||||
|
not = bool
|
||||||
|
type_mismatch_number = bool
|
||||||
|
type_mismatch_bool = bool
|
||||||
|
}))
|
||||||
|
inequality = map(object({
|
||||||
|
lt = bool
|
||||||
|
gt = bool
|
||||||
|
eq = bool
|
||||||
|
}))
|
||||||
|
arithmetic = object({
|
||||||
|
add = number
|
||||||
|
add_big = number
|
||||||
|
sub = number
|
||||||
|
sub_neg = number
|
||||||
|
mul = number
|
||||||
|
div = number
|
||||||
|
mod = number
|
||||||
|
mod_frac = number
|
||||||
|
})
|
||||||
|
logical_binary = map(object({
|
||||||
|
tt = bool
|
||||||
|
tf = bool
|
||||||
|
ft = bool
|
||||||
|
ff = bool
|
||||||
|
}))
|
||||||
|
logical_unary = map(object({
|
||||||
|
t = bool
|
||||||
|
f = bool
|
||||||
|
}))
|
||||||
|
conditional = object({
|
||||||
|
t = string
|
||||||
|
f = string
|
||||||
|
})
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user