use mrrc::{Field, Leader, Record};
pub fn create_test_leader() -> Leader {
Leader {
record_length: 1000,
record_status: 'a',
record_type: 'a',
bibliographic_level: 'm',
control_record_type: 'a',
character_coding: ' ',
indicator_count: 2,
subfield_code_count: 2,
data_base_address: 100,
encoding_level: ' ',
cataloging_form: ' ',
multipart_level: ' ',
reserved: "4500".to_string(),
}
}
#[allow(dead_code)]
pub fn make_leader() -> Leader {
create_test_leader()
}
pub fn create_test_record() -> Record {
let leader = Leader {
record_length: 0,
record_status: 'n',
record_type: 'a',
bibliographic_level: 'm',
control_record_type: ' ',
character_coding: ' ',
indicator_count: 2,
subfield_code_count: 2,
data_base_address: 0,
encoding_level: ' ',
cataloging_form: 'a',
multipart_level: ' ',
reserved: "4500".to_string(),
};
Record::new(leader)
}
pub fn create_realistic_record() -> Record {
let mut record = create_test_record();
let mut field_245 = Field::new("245".to_string(), '1', '0');
field_245.add_subfield_str('a', "The Great Gatsby");
field_245.add_subfield_str('c', "F. Scott Fitzgerald");
record.add_field(field_245);
let mut field_650_1 = Field::new("650".to_string(), ' ', '0');
field_650_1.add_subfield_str('a', "Novels");
field_650_1.add_subfield_str('x', "American");
record.add_field(field_650_1);
let mut field_650_2 = Field::new("650".to_string(), ' ', '0');
field_650_2.add_subfield_str('a', "Coming of age");
field_650_2.add_subfield_str('x', "Fiction");
record.add_field(field_650_2);
let mut field_651 = Field::new("651".to_string(), ' ', '0');
field_651.add_subfield_str('a', "United States");
field_651.add_subfield_str('x', "Fiction");
record.add_field(field_651);
let mut field_600 = Field::new("600".to_string(), '1', '0');
field_600.add_subfield_str('a', "Gatsby, Jay");
field_600.add_subfield_str('c', "Fictional character");
record.add_field(field_600);
let mut field_700 = Field::new("700".to_string(), '1', ' ');
field_700.add_subfield_str('a', "Fitzgerald, F. Scott");
field_700.add_subfield_str('d', "1896-1940");
record.add_field(field_700);
let mut field_710 = Field::new("710".to_string(), '2', ' ');
field_710.add_subfield_str('a', "Scribner");
record.add_field(field_710);
record
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_create_test_leader_valid() {
let leader = create_test_leader();
assert_eq!(leader.record_type, 'a');
assert_eq!(leader.indicator_count, 2);
}
#[test]
fn test_create_test_record_valid() {
let record = create_test_record();
assert_eq!(record.fields().count(), 0);
}
#[test]
fn test_create_realistic_record_has_expected_fields() {
let record = create_realistic_record();
assert_eq!(record.fields().count(), 7);
}
}