Function fix_checksum::validate [] [src]

pub fn validate(
    inbound_message: &str
) -> Result<bool, FIXChecksumValidatorError>

This function validates FIX message checksum

Examples

Empty message:

use fix_checksum::FIXChecksumValidatorError::InvalidEmptyMessage;
assert_eq!(fix_checksum::validate("").unwrap_err(), InvalidEmptyMessage);

Message without tail:

use fix_checksum::FIXChecksumValidatorError::ChecksumFieldNotFound;
let message_parts: Vec<&str> = vec!["8=FIX.4.2", "9=73", "35=0", "49=BRKR",
  "56=INVMGR", "34=235", "52=19980604-07:58:28", "112=19980604-07:58:28"];
let message: String = message_parts
  .iter()
  .fold(String::new(), |msg, msg_part| msg.to_string() + msg_part + "\x01");
assert_eq!(fix_checksum::validate(&message).unwrap_err(), ChecksumFieldNotFound);

Message with incorrect checksum format:

use fix_checksum::FIXChecksumValidatorError::ChecksumFieldInvalidFormat;
let message_parts: Vec<&str> = vec!["8=FIX.4.2", "9=73", "35=0", "49=BRKR",
  "56=INVMGR", "34=235", "52=19980604-07:58:28", "112=19980604-07:58:28", "10=2ZZ"];
let message: String = message_parts
  .iter()
  .fold(String::new(), |msg, msg_part| msg.to_string() + msg_part + "\x01");
assert_eq!(fix_checksum::validate(&message).unwrap_err(),
  ChecksumFieldInvalidFormat("2ZZ".parse::<u32>().unwrap_err()));

Message with incorrect checksum value:

let message_parts: Vec<&str> = vec!["8=FIX.4.2", "9=73", "35=0", "49=BRKR",
  "56=INVMGR", "34=235", "52=19980604-07:58:28", "112=19980604-07:58:28", "10=231"];
let message: String = message_parts
  .iter()
  .fold(String::new(), |msg, msg_part| msg.to_string() + msg_part + "\x01");
assert_eq!(fix_checksum::validate(&message).unwrap(), false);

Valid message:

let message_parts: Vec<&str> = vec!["8=FIX.4.2", "9=73", "35=0", "49=BRKR",
  "56=INVMGR", "34=235", "52=19980604-07:58:28", "112=19980604-07:58:28", "10=236"];
let message: String = message_parts
  .iter()
  .fold(String::new(), |msg, msg_part| msg.to_string() + msg_part + "\x01");
assert_eq!(fix_checksum::validate(&message).unwrap(), true);