5 stable releases

2.0.1 Apr 29, 2023
1.0.2 Jul 24, 2021

#320 in Text processing

Download history 88/week @ 2023-12-17 3/week @ 2023-12-24 64/week @ 2023-12-31 86/week @ 2024-01-07 60/week @ 2024-01-14 104/week @ 2024-01-21 73/week @ 2024-01-28 100/week @ 2024-02-04 162/week @ 2024-02-11 161/week @ 2024-02-18 72/week @ 2024-02-25 185/week @ 2024-03-03 174/week @ 2024-03-10 42/week @ 2024-03-17 115/week @ 2024-03-24 128/week @ 2024-03-31

469 downloads per month
Used in 2 crates

MIT/Apache

18KB
231 lines

heckcheck

A heckin small test case generator

Installation

$ cargo add heckcheck

Examples

This is a basic roundtrip test for an RGB serializer and parser, which ensures that the output matches the original input.

use heckcheck::prelude::*;

/// A color value encoded as Red-Green-Blue
#[derive(Clone, Debug, Arbitrary, PartialEq)]
pub struct Rgb {
    pub r: u8,
    pub g: u8,
    pub b: u8,
}

impl Rgb {
    /// Convert from RGB to Hexadecimal.
    pub fn to_hex(&self) -> String {
        format!("#{:02X}{:02X}{:02X}", self.r, self.g, self.b)
    }

    /// Convert from Hexadecimal to RGB.
    pub fn from_hex(s: String) -> Self {
        let s = s.strip_prefix('#').unwrap();
        Rgb {
            r: u8::from_str_radix(&s[0..2], 16).unwrap(),
            g: u8::from_str_radix(&s[2..4], 16).unwrap(),
            b: u8::from_str_radix(&s[4..6], 16).unwrap(),
        }
    }
}

// Validate values can be converted from RGB to Hex and back.
heckcheck::check(|rgb: Rgb| {
    let hex = rgb.to_hex();
    let res = Rgb::from_hex(hex);
    assert_eq!(rgb, res);
    Ok(())
});

Safety

This crate uses #![deny(unsafe_code)] to ensure everything is implemented in 100% Safe Rust.

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~640KB
~11K SLoC