added observer testcase
This commit is contained in:
parent
db9413e223
commit
0b6c80133c
@ -81,3 +81,46 @@ impl Executor for InMemoryExecutor {
|
|||||||
self.base.observers.push(observer);
|
self.base.observers.push(observer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl InMemoryExecutor {
|
||||||
|
fn new(harness_fn: HarnessFunction) -> InMemoryExecutor {
|
||||||
|
InMemoryExecutor {
|
||||||
|
base: ExecutorBase {
|
||||||
|
observers: vec![],
|
||||||
|
cur_input: Option::None,
|
||||||
|
},
|
||||||
|
harness: harness_fn,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::executors::{Executor, ExitKind, InMemoryExecutor};
|
||||||
|
use crate::observers::Observer;
|
||||||
|
use crate::AflError;
|
||||||
|
|
||||||
|
struct Nopserver {}
|
||||||
|
|
||||||
|
impl Observer for Nopserver {
|
||||||
|
fn reset(&mut self) -> Result<(), AflError> {
|
||||||
|
Err(AflError::Unknown)
|
||||||
|
}
|
||||||
|
fn post_exec(&mut self) -> Result<(), AflError> {
|
||||||
|
Err(AflError::Unknown)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_harness_fn_nop(_executor: &dyn Executor, buf: &[u8]) -> ExitKind {
|
||||||
|
println! {"Fake exec with buf of len {}", buf.len()};
|
||||||
|
ExitKind::Ok
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_inmem_post_exec() {
|
||||||
|
let mut in_mem_executor = InMemoryExecutor::new(test_harness_fn_nop);
|
||||||
|
let nopserver = Nopserver {};
|
||||||
|
in_mem_executor.add_observer(Box::new(nopserver));
|
||||||
|
assert_eq!(in_mem_executor.post_exec_observers().is_err(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -16,3 +16,27 @@ impl Input for BytesInput {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::utils::{next_pow2, Rand, Xoshiro256StarRand};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_input() {
|
||||||
|
let mut rand = Xoshiro256StarRand::new();
|
||||||
|
assert_ne!(rand.next(), rand.next());
|
||||||
|
assert!(rand.below(100) < 100);
|
||||||
|
assert_eq!(rand.below(1), 0);
|
||||||
|
assert_eq!(rand.between(10, 10), 10);
|
||||||
|
assert!(rand.between(11, 20) > 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_next_pow2() {
|
||||||
|
assert_eq!(next_pow2(0), 0);
|
||||||
|
assert_eq!(next_pow2(1), 1);
|
||||||
|
assert_eq!(next_pow2(2), 2);
|
||||||
|
assert_eq!(next_pow2(3), 4);
|
||||||
|
assert_eq!(next_pow2(1000), 1024);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -88,7 +88,7 @@ impl Xoshiro256StarRand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Get the next higher power of two
|
/// Get the next higher power of two
|
||||||
fn next_pow2(val: u64) -> u64 {
|
pub fn next_pow2(val: u64) -> u64 {
|
||||||
// Early exit so we don't have to do a wrapping subtract;
|
// Early exit so we don't have to do a wrapping subtract;
|
||||||
if val <= 2 {
|
if val <= 2 {
|
||||||
return val;
|
return val;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user