test(machine): integer overflow
This commit is contained in:
parent
37bd22a0d2
commit
ec58279424
|
@ -1380,6 +1380,17 @@ dependencies = [
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-bigint"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-integer"
|
name = "num-integer"
|
||||||
version = "0.1.45"
|
version = "0.1.45"
|
||||||
|
@ -2657,6 +2668,7 @@ dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"itertools",
|
"itertools",
|
||||||
"k256",
|
"k256",
|
||||||
|
"num-bigint",
|
||||||
"pallas-addresses",
|
"pallas-addresses",
|
||||||
"pallas-codec",
|
"pallas-codec",
|
||||||
"pallas-crypto",
|
"pallas-crypto",
|
||||||
|
|
|
@ -33,6 +33,7 @@ itertools = "0.10.5"
|
||||||
indexmap = "1.9.2"
|
indexmap = "1.9.2"
|
||||||
secp256k1 = { version = "0.26.0", optional = true }
|
secp256k1 = { version = "0.26.0", optional = true }
|
||||||
k256 = { version = "0.12.0", optional = true }
|
k256 = { version = "0.12.0", optional = true }
|
||||||
|
num-bigint = "0.4.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
hex = "0.4.3"
|
hex = "0.4.3"
|
||||||
|
|
|
@ -730,3 +730,33 @@ impl From<&Constant> for Type {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use crate::{
|
||||||
|
ast::{Constant, NamedDeBruijn, Program, Term},
|
||||||
|
builtins::DefaultFunction,
|
||||||
|
machine::Error,
|
||||||
|
};
|
||||||
|
|
||||||
|
use super::cost_model::ExBudget;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn add_big_ints() {
|
||||||
|
let program: Program<NamedDeBruijn> = Program {
|
||||||
|
version: (0, 0, 0),
|
||||||
|
term: Term::Apply {
|
||||||
|
function: Term::Apply {
|
||||||
|
function: Term::Builtin(DefaultFunction::AddInteger).into(),
|
||||||
|
argument: Term::Constant(Constant::Integer(i128::MAX).into()).into(),
|
||||||
|
}
|
||||||
|
.into(),
|
||||||
|
argument: Term::Constant(Constant::Integer(i128::MAX).into()).into(),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let (eval_result, _, _) = program.eval(ExBudget::default());
|
||||||
|
|
||||||
|
assert!(!matches!(eval_result, Err(Error::OverflowError)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue