use crate::regexes::SOLANA_ADDRESS_REGEX;
pub fn extract_solana_address(text: &str) -> Option<String> {
let pattern = &SOLANA_ADDRESS_REGEX;
pattern.find(text).map(|m| m.as_str().to_string())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_extract_solana_address() {
let input = "
DijafwofOIJIFJWOIIWFIWOFJFJWF
fewfkwwepfwkweff
dqwkdqdqe21r-3kkrr09kr290k90dsad
frhb8l7y9qq41qzxyltc2nw8an1rjfllxrf2x9rwllmo
dpqwdwqodqdqw
wd
";
let expected_address = Some("frhb8l7y9qq41qzxyltc2nw8an1rjfllxrf2x9rwllmo".to_string());
let result = extract_solana_address(input);
assert_eq!(result, expected_address);
}
#[test]
fn test_no_addresses() {
let input = "
This is a test with no valid Solana addresses!
";
let expected_address = None;
let result = extract_solana_address(input);
assert_eq!(result, expected_address);
}
#[test]
fn test_multiple_addresses() {
let input = "
frhb8l7y9qq41qzxyltc2nw8an1rjfllxrf2x9rwllmo
anotherinvalidstring
4nLgH9D5bPQoGeXkP9eXhCTRYD5U5YBKnPXaM1D9U6uj
";
let expected_address = Some("frhb8l7y9qq41qzxyltc2nw8an1rjfllxrf2x9rwllmo".to_string());
let result = extract_solana_address(input);
assert_eq!(result, expected_address);
}
#[test]
fn test_link() {
let input = "https://dexscreener.com/solana/6UeL7hzjCzKBqKap8vtay6SfCaCkQAUpidTWayrwpump";
let expected_address = Some("6UeL7hzjCzKBqKap8vtay6SfCaCkQAUpidTWayrwpump".to_string());
let result = extract_solana_address(input);
assert_eq!(expected_address, result);
}
#[test]
fn test_link_photon() {
let input = "https://photon-sol.tinyastro.io/en/lp/FtpuprhMrBqhEGTTTiFZDHRnpwiAU2ryAN8VJ7G1Dhyy?handle=13750337e9c16b15406821";
let expected_address = Some("FtpuprhMrBqhEGTTTiFZDHRnpwiAU2ryAN8VJ7G1Dhyy".to_string());
let result = extract_solana_address(input);
assert_eq!(expected_address, result);
}
}