add tests for Rust admin module

master
Andrew Johnson 6 years ago
parent 5f364b19b6
commit aabe944167

@ -2,4 +2,5 @@
extern crate libc;
mod magic;
mod admin;
mod tests;

@ -0,0 +1,172 @@
use admin;
#[test]
fn authorize_override() {
admin::reset_state();
{
let session = admin::authorize_override().ok();
assert!(admin::is_override());
}
assert(!admin::is_override());
assert!(admin::check_error().is_ok());
}
#[test]
fn authorize_privileged() {
admin::reset_state();
{
let session = admin::authorize_privileged().ok();
assert(admin::is_privileged());
}
assert(!admin::is_privileged());
assert!(admin::check_error().is_ok());
}
#[test]
fn issue_admin_code() {
admin::reset_state();
{
let session = admin::authorize_admin().ok();
assert(admin::is_admin());
}
assert(!admin::is_admin());
assert!(admin::check_error().is_ok());
}
#[test]
fn double_override_failure() {
admin::reset_state();
let session = admin::authorize_override().ok();
assert!(admin::authorize_override().err().is_some());
assert!(!admin::check_error().is_ok());
}
#[test]
fn double_privileged_failure() {
admin::reset_state();
let session = admin::authorize_privileged().ok();
assert!(admin::authorize_privileged().err().is_some());
assert!(!admin::check_error().is_ok());
}
#[test]
fn double_admin_failure() {
admin::reset_state();
let session = admin::authorize_admin().ok();
assert!(admin::authorize_admin().err().is_some());
assert!(!admin::check_error().is_ok());
}
#[test]
fn clone_override() {
admin::reset_state();
{
let session = admin::authorize_override().ok().unwrap();
let session2 = session.clone();
assert!(admin::is_override());
}
assert!(!admin::is_override());
assert!(admin::check_error().is_ok());
}
#[test]
fn clone_privileged() {
admin::reset_state();
{
let session = admin::authorize_privileged().ok().unwrap();
let session2 = session.clone();
assert!(admin::is_privileged());
}
assert!(!admin::is_privileged());
assert!(admin::check_error().is_ok());
}
#[test]
fn double_free_admin_failure() {
admin::reset_state();
{
let session = admin::authorize_admin().ok().unwrap();
let session2 = session.clone();
assert!(admin::is_admin());
}
assert!(!admin::is_admin());
assert!(admin::check_error().is_ok());
}
#[test]
fn input_floor() {
admin::reset_state();
{
let session = admin::authorize_admin().ok();
admin::input_floor(2).ok();
}
assert!(!admin::is_admin());
assert!(admin::check_error().is_ok());
}
#[test]
fn manual_mode() {
admin::reset_state();
{
let session = admin::authorize_admin().ok();
admin::manual_mode().ok();
}
assert!(!admin::is_admin());
assert!(admin::check_error().is_ok());
}
#[test]
fn normal_mode() {
admin::reset_state();
{
let session = admin::authorize_admin().ok();
admin::normal_mode().ok();
}
assert!(!admin::is_admin());
assert!(admin::check_error().is_ok());
}
#[test]
fn flash() {
admin::reset_state();
assert!(!admin::is_override());
assert!(!admin::is_privileged());
assert!(!admin::is_admin());
admin::flash(222).ok();
assert!(admin::check_error().is_ok());
}
#[test]
fn toggle_light() {
admin::reset_state();
assert!(!admin::is_override());
assert!(!admin::is_privileged());
assert!(!admin::is_admin());
admin::toggle_light(7).ok();
assert!(admin::check_error().is_ok());
}
#[test]
fn set_light_color() {
admin::reset_state();
assert!(!admin::is_override());
assert!(!admin::is_privileged());
assert!(!admin::is_admin());
admin::set_light_color(33, 123).ok();
assert!(admin::check_error().is_ok());
}
#[test]
fn deny_input_floor() {
admin::reset_state();
admin::input_floor(2).err();
assert!(!admin::check_error().is_ok());
}
#[test]
fn deny_manual_mode() {
admin::reset_state();
admin::manual_mode().err();
assert!(!admin::check_error().is_ok());
}
#[test]
fn deny_normal_mode() {
admin::reset_state();
admin::normal_mode().err();
assert!(!admin::check_error().is_ok());
}

@ -137,8 +137,8 @@ fn input_floor() {
magic::override_reset_state();
magic::issue_override_code(4);
magic::issue_override_code(2);
assert!(magic::poll_override_code(), 4);
assert!(magic::poll_override_code(), 2);
assert!(magic::poll_override_code() == 4);
assert!(magic::poll_override_code() == 2);
}
}
@ -147,7 +147,7 @@ fn manual_mode() {
unsafe {
magic::override_reset_state();
magic::issue_override_code(5);
assert!(magic::poll_override_code(), 5);
assert!(magic::poll_override_code() == 5);
}
}
@ -156,7 +156,7 @@ fn normal_mode() {
unsafe {
magic::override_reset_state();
magic::issue_override_code(6);
assert!(magic::poll_override_code(), 6);
assert!(magic::poll_override_code() == 6);
}
}
@ -165,8 +165,8 @@ fn flash() {
unsafe {
magic::override_reset_state();
magic::elevator_display_flash(222);
assert!(magic::poll_override_code(), 7);
assert!(magic::poll_override_code(), 222);
assert!(magic::poll_override_code() == 7);
assert!(magic::poll_override_code() == 222);
}
}
@ -175,13 +175,13 @@ fn toggle_light() {
unsafe {
magic::override_reset_state();
magic::elevator_display_toggle_light(33);
assert!(magic::poll_override_code(), 8);
assert!(magic::poll_override_code(), 33);
assert!(magic::poll_override_code(), 1);
assert!(magic::poll_override_code() == 8);
assert!(magic::poll_override_code() == 33);
assert!(magic::poll_override_code() == 1);
magic::elevator_display_toggle_light(33);
assert!(magic::poll_override_code(), 8);
assert!(magic::poll_override_code(), 33);
assert!(magic::poll_override_code(), 0);
assert!(magic::poll_override_code() == 8);
assert!(magic::poll_override_code() == 33);
assert!(magic::poll_override_code() == 0);
}
}
@ -190,8 +190,36 @@ fn set_light_color() {
unsafe {
magic::override_reset_state();
magic::elevator_display_set_light_color(33, 222);
assert!(magic::poll_override_code(), 9);
assert!(magic::poll_override_code(), 33);
assert!(magic::poll_override_code(), 222);
assert!(magic::poll_override_code() == 9);
assert!(magic::poll_override_code() == 33);
assert!(magic::poll_override_code() == 222);
}
}
#[test]
fn deny_input_floor() {
unsafe {
magic::override_reset_state();
magic::issue_override_code(4);
magic::issue_override_code(2);
assert!(magic::poll_override_error() == 3);
}
}
#[test]
fn deny_manual_mode() {
unsafe {
magic::override_reset_state();
magic::issue_override_code(5);
assert!(magic::poll_override_error() == 3);
}
}
#[test]
fn deny_normal_mode() {
unsafe {
magic::override_reset_state();
magic::issue_override_code(6);
assert!(magic::poll_override_error() == 3);
}
}

@ -0,0 +1,3 @@
mod magic;
mod admin;
Loading…
Cancel
Save