Skip to content

Commit

Permalink
tests(capi): increase test coverage for C API
Browse files Browse the repository at this point in the history
  • Loading branch information
plusvic committed May 5, 2024
1 parent d7c5181 commit 769262a
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions capi/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ use crate::{
yrx_rule_identifier, yrx_rule_namespace, yrx_rule_patterns,
yrx_rules_deserialize, yrx_rules_destroy, yrx_rules_serialize,
yrx_scanner_create, yrx_scanner_destroy, yrx_scanner_on_matching_rule,
yrx_scanner_scan, yrx_scanner_set_global_bool, YRX_BUFFER, YRX_RULE,
yrx_scanner_scan, yrx_scanner_set_global_bool,
yrx_scanner_set_global_float, yrx_scanner_set_global_int,
yrx_scanner_set_global_str, yrx_scanner_set_timeout, YRX_BUFFER, YRX_RULE,
};
use std::ffi::{c_void, CString};

Expand All @@ -22,7 +24,7 @@ extern "C" fn callback(rule: *const YRX_RULE, user_data: *mut c_void) {
yrx_rule_identifier(rule, &mut ptr, &mut len);

let patterns = yrx_rule_patterns(rule);
assert_eq!((*patterns).num_patterns, 0);
assert_eq!((*patterns).num_patterns, 1);
yrx_patterns_destroy(patterns);
}

Expand All @@ -39,11 +41,14 @@ fn capi() {

let src = CString::new(
b"rule test {\
strings: \
$foo = \"foo\" \
condition: \
$foo or ( \
some_bool and \
some_str == \"some_str\" and \
some_int == 1 and \
some_float == 1.5 \
some_float == 1.5) \
}"
.to_vec(),
)
Expand Down Expand Up @@ -84,6 +89,7 @@ fn capi() {

let mut matches = 0;

yrx_scanner_set_timeout(scanner, 60);
yrx_scanner_on_matching_rule(
scanner,
callback,
Expand All @@ -101,6 +107,20 @@ fn capi() {
yrx_scanner_scan(scanner, std::ptr::null(), 0);
assert_eq!(matches, 0);

// Set all variables to the expected values, and the rule should match
// again.
yrx_scanner_set_global_bool(scanner, some_bool.as_ptr(), true);
yrx_scanner_set_global_int(scanner, some_int.as_ptr(), 1);
yrx_scanner_set_global_float(scanner, some_float.as_ptr(), 1.5);
yrx_scanner_set_global_str(
scanner,
some_str.as_ptr(),
some_str.as_ptr(),
);

yrx_scanner_scan(scanner, std::ptr::null(), 0);
assert_eq!(matches, 1);

yrx_scanner_destroy(scanner);
yrx_rules_destroy(rules);
}
Expand Down

0 comments on commit 769262a

Please sign in to comment.