#![cfg(kani)]
use elicitation::verification::types::{
BalancedDelimiters, RegexBytes, ValidCharClass, ValidEscapes, ValidQuantifiers,
};
#[kani::proof]
fn verify_balanced_simple() {
const MAX_LEN: usize = 16;
let bytes = b"(abc)";
let result = BalancedDelimiters::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_balanced_nested() {
const MAX_LEN: usize = 16;
let bytes = b"((a|b)c)";
let result = BalancedDelimiters::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_unbalanced_rejected() {
const MAX_LEN: usize = 16;
let bytes = b"(abc";
let result = BalancedDelimiters::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_balanced_brackets() {
const MAX_LEN: usize = 16;
let bytes = b"[a-z]+";
let result = BalancedDelimiters::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_escape_digit() {
const MAX_LEN: usize = 16;
let bytes = b"\\d+";
let result = ValidEscapes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_escape_word() {
const MAX_LEN: usize = 16;
let bytes = b"\\w*";
let result = ValidEscapes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_escape_dot() {
const MAX_LEN: usize = 16;
let bytes = b"\\.";
let result = ValidEscapes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_invalid_escape() {
const MAX_LEN: usize = 16;
let bytes = b"\\x";
let result = ValidEscapes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_quantifier_star() {
const MAX_LEN: usize = 16;
let bytes = b"a*";
let result = ValidQuantifiers::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_quantifier_plus() {
const MAX_LEN: usize = 16;
let bytes = b"b+";
let result = ValidQuantifiers::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_quantifier_range() {
const MAX_LEN: usize = 16;
let bytes = b"a{3,5}";
let result = ValidQuantifiers::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_quantifier_without_atom() {
const MAX_LEN: usize = 16;
let bytes = b"*";
let result = ValidQuantifiers::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_quantifier_invalid_range() {
const MAX_LEN: usize = 16;
let bytes = b"a{5,3}";
let result = ValidQuantifiers::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_charclass_simple() {
const MAX_LEN: usize = 16;
let bytes = b"[abc]";
let result = ValidCharClass::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_charclass_range() {
const MAX_LEN: usize = 16;
let bytes = b"[a-z]";
let result = ValidCharClass::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_charclass_negated() {
const MAX_LEN: usize = 16;
let bytes = b"[^0-9]";
let result = ValidCharClass::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_charclass_invalid_range() {
const MAX_LEN: usize = 16;
let bytes = b"[z-a]";
let result = ValidCharClass::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_regex_literal() {
const MAX_LEN: usize = 5;
let bytes = b"hello";
let _result = RegexBytes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_regex_digit_range() {
const MAX_LEN: usize = 16;
let bytes = b"\\d{2,4}";
let result = RegexBytes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_regex_anchored() {
const MAX_LEN: usize = 16;
let bytes = b"^[a-z]+$";
let result = RegexBytes::<MAX_LEN>::from_slice(bytes);
}
#[kani::proof]
fn verify_regex_alternation() {
const MAX_LEN: usize = 16;
let bytes = b"(\\d+|\\w+)";
let result = RegexBytes::<MAX_LEN>::from_slice(bytes);
}