test(machine): integer overflow

This commit is contained in:
rvcas 2023-02-09 09:44:06 -05:00
parent 37bd22a0d2
commit ec58279424
No known key found for this signature in database
GPG Key ID: C09B64E263F7D68C
3 changed files with 43 additions and 0 deletions

12
Cargo.lock generated vendored
View File

@ -1380,6 +1380,17 @@ dependencies = [
"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]]
name = "num-integer"
version = "0.1.45"
@ -2657,6 +2668,7 @@ dependencies = [
"indexmap",
"itertools",
"k256",
"num-bigint",
"pallas-addresses",
"pallas-codec",
"pallas-crypto",

View File

@ -33,6 +33,7 @@ itertools = "0.10.5"
indexmap = "1.9.2"
secp256k1 = { version = "0.26.0", optional = true }
k256 = { version = "0.12.0", optional = true }
num-bigint = "0.4.3"
[dev-dependencies]
hex = "0.4.3"

View File

@ -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)));
}
}