memx 0.2.0

memory functions like libc memcmp(), memchr(), memmem(), memcpy(), memset()
Documentation
/**/

#[test]
fn test_memrmem_empty_haystack() {
    let haystack = [];
    let needle = [b'a'];
    assert_eq!(test_memrmem(&haystack, &needle), None);
}

#[test]
fn test_memrmem_empty_needle() {
    let haystack = [b'a', b'b', b'c'];
    let needle = [];
    assert_eq!(test_memrmem(&haystack, &needle), Some(3));
}

#[test]
fn test_memrmem_needle_longer_than_haystack() {
    let haystack = [b'a', b'b'];
    let needle = [b'a', b'b', b'c'];
    assert_eq!(test_memrmem(&haystack, &needle), None);
}

#[test]
fn test_memrmem_needle_at_start() {
    let haystack = [b'a', b'b', b'c', b'd'];
    let needle = [b'a', b'b'];
    assert_eq!(test_memrmem(&haystack, &needle), Some(0));
}

#[test]
fn test_memrmem_needle_at_middle() {
    let haystack = [b'a', b'b', b'c', b'd'];
    let needle = [b'b', b'c'];
    assert_eq!(test_memrmem(&haystack, &needle), Some(1));
}

#[test]
fn test_memrmem_needle_at_end() {
    let haystack = [b'a', b'b', b'c', b'd'];
    let needle = [b'c', b'd'];
    assert_eq!(test_memrmem(&haystack, &needle), Some(2));
}

#[test]
fn test_memrmem_needle_not_found() {
    let haystack = [b'a', b'b', b'c', b'd'];
    let needle = [b'x', b'y'];
    assert_eq!(test_memrmem(&haystack, &needle), None);
}

#[test]
fn test_memrmem_multiple_occurrences() {
    let haystack = [b'a', b'b', b'a', b'b', b'c'];
    let needle = [b'a', b'b'];
    assert_eq!(test_memrmem(&haystack, &needle), Some(2));
}

#[test]
fn test_memrmem_long_buffers() {
    let haystack = [0; 1024];
    let needle = [1; 16];
    let mut long_haystack = haystack.to_vec();
    long_haystack[500..516].copy_from_slice(&needle);
    assert_eq!(test_memrmem(&long_haystack, &needle), Some(500));
}

#[test]
fn test_memrmem_long_buffers_not_found() {
    let haystack = [0; 1024];
    let needle = [1; 16];
    assert_eq!(test_memrmem(&haystack, &needle), None);
}