blob: 04ee8cf54ab35ea00cc2064febf6609562cda6d2 [file]
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#[cfg(test)]
mod tests {
#[test]
fn test_return_value() {
use simple_functions::return_value;
assert_eq!(return_value(), 42);
}
#[test]
fn test_return_pointer() {
use simple_functions::return_pointer;
unsafe {
assert_eq!(*return_pointer(), 42);
}
}
#[test]
fn test_return_reference() {
use simple_functions::return_reference;
unsafe {
assert_eq!(*return_reference(), 42);
}
}
#[test]
fn test_take_pointer() {
use simple_functions::take_pointer;
take_pointer(None);
let mut i: i32 = 0;
take_pointer(Some(&mut i));
assert_eq!(i, 42);
}
#[test]
fn test_take_reference() {
use simple_functions::take_reference;
let mut i: i32 = 0;
take_reference(&mut i);
assert_eq!(i, 42);
}
#[test]
fn test_forward_pointer() {
use simple_functions::forward_pointer;
assert_eq!(forward_pointer(None), None);
let i: i32 = 42;
assert_eq!(*forward_pointer(Some(&i)).unwrap(), 42);
}
#[test]
fn test_forward_reference() {
use simple_functions::forward_reference;
let i: i32 = 42;
assert_eq!(*forward_reference(&i), 42);
}
#[test]
fn test_multiply() {
assert_eq!(simple_functions::multiply(42, 123), 42 * 123);
}
#[test]
fn test_multiply_with_unnamed_parameters() {
assert_eq!(simple_functions::multiply_with_unnamed_parameters(42, 456), 42 * 456);
}
#[test]
fn test_function_pointer() {
let maybe_mul_fn = simple_functions::get_pointer_to_multiply_function();
let mul_fn = maybe_mul_fn.expect("Expecting non-null / non-None function pointer");
assert_eq!(mul_fn(123, 456), 123 * 456);
}
#[test]
fn test_function_reference() {
// TODO(b/217419782): Replicate `test_function_pointer`, but for C++
// references. (e.g. no `expect` / `Option` unwrapping should be
// needed).
}
#[test]
fn test_function_pointer_returned_from_inline_function() {
let maybe_mul_fn = simple_functions::inline_get_pointer_to_multiply_function();
let mul_fn = maybe_mul_fn.expect("Expecting non-null / non-None function pointer");
assert_eq!(mul_fn(123, 456), 123 * 456);
}
}