Add some tests for foreign library interface
parent
7dd54d42f7
commit
16e5942a44
@ -1,67 +1,19 @@
|
|||||||
use libc::{c_int, c_void};
|
use libc::{c_int, c_void};
|
||||||
|
|
||||||
#[link(name = "poll_override_code")]
|
#[link(name = "elevatormagic")]
|
||||||
extern {
|
extern {
|
||||||
|
pub fn issue_override_code(code: c_int);
|
||||||
pub fn poll_override_code() -> c_int;
|
pub fn poll_override_code() -> c_int;
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "poll_override_input_floor")]
|
|
||||||
extern {
|
|
||||||
pub fn poll_override_input_floor() -> c_int;
|
pub fn poll_override_input_floor() -> c_int;
|
||||||
}
|
pub fn poll_override_error() -> c_int;
|
||||||
|
|
||||||
#[link(name = "poll_override_errors")]
|
|
||||||
extern {
|
|
||||||
pub fn poll_override_errors() -> c_int;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "poll_override_session")]
|
|
||||||
extern {
|
|
||||||
pub fn poll_override_session() -> *const c_void;
|
pub fn poll_override_session() -> *const c_void;
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "free_override_session")]
|
|
||||||
extern {
|
|
||||||
pub fn free_override_session(session: *const c_void);
|
pub fn free_override_session(session: *const c_void);
|
||||||
}
|
pub fn poll_physical_override_privileged_session() -> *const c_void;
|
||||||
|
pub fn poll_physical_override_admin_session() -> *const c_void;
|
||||||
#[link(name = "poll_physical_override_privileged")]
|
|
||||||
extern {
|
|
||||||
pub fn poll_physical_override_privileged() -> *const c_void;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "poll_physical_override_admin")]
|
|
||||||
extern {
|
|
||||||
pub fn poll_physical_override_admin() -> *const c_void;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#[link(name = "override_manual_mode")]
|
|
||||||
extern {
|
|
||||||
pub fn override_manual_mode();
|
pub fn override_manual_mode();
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "override_normal_mode")]
|
|
||||||
extern {
|
|
||||||
pub fn override_normal_mode();
|
pub fn override_normal_mode();
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "override_reset_state")]
|
|
||||||
extern {
|
|
||||||
pub fn override_reset_state();
|
pub fn override_reset_state();
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "elevator_display_flash")]
|
|
||||||
extern {
|
|
||||||
pub fn elevator_display_flash(pattern: c_int);
|
pub fn elevator_display_flash(pattern: c_int);
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "elevator_display_toggle_light")]
|
|
||||||
extern {
|
|
||||||
pub fn elevator_display_toggle_light(light_id: c_int);
|
pub fn elevator_display_toggle_light(light_id: c_int);
|
||||||
}
|
|
||||||
|
|
||||||
#[link(name = "elevator_display_set_light_color")]
|
|
||||||
extern {
|
|
||||||
pub fn elevator_display_set_light_color(light_id: c_int, color: c_int);
|
pub fn elevator_display_set_light_color(light_id: c_int, color: c_int);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,95 @@
|
|||||||
|
use magic;
|
||||||
|
use libc::{c_void};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn issue_override_code() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
assert!(magic::poll_override_code() == 1);
|
||||||
|
assert!(magic::poll_override_error() == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn issue_privileged_code() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(2);
|
||||||
|
assert!(magic::poll_override_code() == 2);
|
||||||
|
assert!(magic::poll_override_error() == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn issue_admin_code() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(3);
|
||||||
|
assert!(magic::poll_override_code() == 3);
|
||||||
|
assert!(magic::poll_override_error() == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn authorize_override_success() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
let session = magic::poll_override_session();
|
||||||
|
assert!(session != (0 as *const c_void));
|
||||||
|
magic::free_override_session(session);
|
||||||
|
assert!(magic::poll_override_error() == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn authorize_privileged_success() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(2);
|
||||||
|
let session = magic::poll_physical_override_privileged_session();
|
||||||
|
assert!(session != (0 as *const c_void));
|
||||||
|
magic::free_override_session(session);
|
||||||
|
assert!(magic::poll_override_error() == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn authorize_admin_success() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(3);
|
||||||
|
let session = magic::poll_physical_override_admin_session();
|
||||||
|
assert!(session != (0 as *const c_void));
|
||||||
|
magic::free_override_session(session);
|
||||||
|
assert!(magic::poll_override_error() == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn double_override_failure() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
assert!(magic::poll_override_session() == (0 as *const c_void));
|
||||||
|
assert!(magic::poll_override_error() == 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn double_privileged_failure() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
assert!(magic::poll_physical_override_privileged_session() == (0 as *const c_void));
|
||||||
|
assert!(magic::poll_override_error() == 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn double_admin_failure() {
|
||||||
|
unsafe {
|
||||||
|
magic::override_reset_state();
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
magic::issue_override_code(1);
|
||||||
|
assert!(magic::poll_physical_override_admin_session() == (0 as *const c_void));
|
||||||
|
assert!(magic::poll_override_error() == 1);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue