bin/darkfi: test function for f64 -> u64

This commit is contained in:
lunar-mining
2021-09-28 19:44:19 +02:00
parent 0e372a8f57
commit 685f8e96ff

View File

@@ -214,7 +214,7 @@ impl Darkfid {
let network = &args[0];
let token = &args[1];
let token_id = match self.parse_params(&network, &token) {
let token_id = match self.parse_network(&network, &token) {
Ok(t) => t,
Err(_e) => {
debug!(target: "DARKFID", "TOKEN ID IS ERR");
@@ -362,7 +362,7 @@ impl Darkfid {
}
}
fn parse_params(&self, network: &Value, token: &Value) -> Result<Value> {
fn parse_network(&self, network: &Value, token: &Value) -> Result<Value> {
match network.as_str() {
Some("solana") | Some("sol") => match token.as_str() {
Some("solana") | Some("sol") => {
@@ -380,6 +380,32 @@ impl Darkfid {
}
}
// BTC has 8 decimals
// SOL uses conversion function soltolamport()
// or there are decimals in the token info
// TODO: how to organize these functions more logically w less repetition?
fn parse_params(&self, network: &Value, token: &Value, amount: &Value) -> Result<Value> {
match network.as_str() {
Some("solana") | Some("sol") => match token.as_str() {
Some("solana") | Some("sol") => {
let token_id = "So11111111111111111111111111111111111111112";
let amount = amount.as_u64().unwrap();
let amount_in_apo: u64 = amount * 10 ^ 8;
Ok(json![(token_id, amount_in_apo)])
}
Some(tkn) => {
let token_id = self.symbol_to_id(tkn)?;
let amount = amount.as_u64().unwrap();
let amount_in_apo: u64 = amount * 10 ^ 8;
Ok(json![(token_id, amount_in_apo)])
}
None => Err(Error::TokenParseError),
},
Some("bitcoin") | Some("btc") => Err(Error::NetworkParseError),
Some(_) | None => Err(Error::NetworkParseError),
}
}
fn symbol_to_id(&self, token: &str) -> Result<Value> {
let vec: Vec<char> = token.chars().collect();
let mut counter = 0;
@@ -432,20 +458,20 @@ async fn main() -> Result<()> {
mod tests {
#[test]
fn test_token_parsing() {
let token = "usdc";
//#[test]
//fn test_token_parsing() {
// let token = "usdc";
let vec: Vec<char> = token.chars().collect();
let mut counter = 0;
for c in vec {
if c.is_alphabetic() {
counter += 1;
println!("Found letter: {}", c)
}
}
if counter == token.len() {
println!("Every character is a letter");
}
}
// let vec: Vec<char> = token.chars().collect();
// let mut counter = 0;
// for c in vec {
// if c.is_alphabetic() {
// counter += 1;
// println!("Found letter: {}", c)
// }
// }
// if counter == token.len() {
// println!("Every character is a letter");
// }
//}
}