statsig-rust 0.19.1

Statsig Rust SDK for usage in multi-user server environments.
Documentation
use more_asserts::assert_gt;
use serde_json::json;
use statsig_rust::evaluation::dynamic_string::DynamicString;

#[test]
fn test_creation_from_string() {
    let dyn_str = DynamicString::from("aB1!".to_string());

    assert_eq!(dyn_str.value, "aB1!");
    assert_eq!(dyn_str.lowercased_value, "ab1!");
}

#[test]
fn test_creation_from_json() {
    let dyn_str = DynamicString::from(json!("aB1!"));

    assert_eq!(dyn_str.value, "aB1!");
    assert_eq!(dyn_str.lowercased_value, "ab1!");
}

#[test]
fn test_comparison_against_str() {
    let dyn_str = DynamicString::from("a_string".to_string());

    assert_eq!(dyn_str, "a_string");
}

#[test]
fn test_comparison_against_string() {
    let dyn_str = DynamicString::from("a_string".to_string());

    assert_eq!(dyn_str, "a_string".to_string());
}

#[test]
fn test_comparison_against_string_ref() {
    let dyn_str = DynamicString::from("a_string".to_string());

    let a_string = "a_string".to_string();
    assert_eq!(dyn_str, &a_string);
}

#[test]
fn test_hash_value_is_consistent() {
    let s = "a_string".to_string();
    let mut hash = DynamicString::from(s.clone()).hash_value;

    for _ in 0..10000 {
        let new_hash = DynamicString::from(s.clone()).hash_value;
        assert_eq!(hash, new_hash);
        assert_gt!(new_hash, 0);
        hash = new_hash;
    }
}

#[test]
fn test_hash_value_is_changing() {
    let mut hash = DynamicString::from("a_string".to_string()).hash_value;

    for i in 0..10000 {
        let new_hash = DynamicString::from(i.to_string()).hash_value;
        assert_ne!(hash, new_hash);
        assert_gt!(new_hash, 0);
        hash = new_hash;
    }
}