use serde_kson::*;
#[test]
fn test_kson_macro() {
kson!(a);
kson!( a["name"] = "kinggunil" );
kson!( a["age"] = 40 );
kson!( a["phone"]["office"] = "010-28**-3440" );
kson!( a["phone"]["home"] = "031-7**-2440" );
kson!( a["country"][0] = "Korea" );
kson!( a["country"][1] = "Canada" );
kson!( a["like"]["number"] = 777 );
kson!( a["like"]["numbers"][0]["a"] = 777777 );
kson!( a["like"]["numbers"][1]["b"] = 121212 );
println!("{:?}", kson!( a["name"] => String) );
println!("{:?}", kson!( a["age"] => i64) + 1 );
println!("{:?}", kson!( a["phone"]["office"] => String) );
println!("{:?}", kson!( a["phone"]["home"] => String) );
println!("{:?}", kson!( a["country"][0] => String) );
println!("{:?}", kson!( a["country"][1] => String) );
println!("{:?}", kson!( a["like"]["number"] => i64) );
println!("{:?}", kson!( a["like"]["numbers"][0]["a"] => i64) );
println!("{:?}", kson!( a["like"]["numbers"][1]["b"] => i64) );
println!("{:#?}", a );
kson!(b);
kson!( b["any"] = 36 );
println!("any: {:?}", kson!( b["any"] => String) );
kson!( b["bee"] = "210316" );
println!("bee: {:?}", kson!( b["bee"] => i32) );
println!("bee: {:?}", kson!( b["bee"] => i64) + 9000000 );
println!("bee: {:?}", kson!( b["bee"] => f64) + 0.77 );
kson!(c);
kson!( c[0] = "55" );
let cc_0 = kson!( c[0] => i64 );
kson!( c[1] = 33 );
let cc_1 = kson!( c[1] => i64 );
let dd = cc_0 + cc_1;
println!("dd: {:?}", dd );
println!("{:#?}", kson!( 77 => String) + "99" );
println!("{:#?}", kson!( "77" => String) + "99" );
println!("{:#?}", kson!( "50" => i64)+99 );
println!("{:#?}", kson!( "50" => i32)+99 );
println!("{:#?}", kson!( "50" => f32)+99.0 );
println!("{:#?}", kson!( "50" => f64)+99.0 );
println!("{:#?}", kson!( 50.0 => f32)+99.0 );
println!("{:#?}", kson!( 50.0 => i64)+99 );
let random_num = kson_rand(1, 100 );
println!("Random number: {}", random_num );
let another_random_num = kson_rand(-500, 10 );
println!("Another random number: {}", another_random_num );
kson_sleep(1.00000001 );
kson_sleep(0.005 );
let unix_time = kson_time();
println!("Current UNIX time: {}", unix_time );
let micro_time = kson_microtime();
println!("Current UNIX time (microseconds): {}", micro_time );
let formatted = kson_number_format(1234567.89123, 2 );
println!("Formatted number: {}", formatted );
let another_formatted = kson_number_format(987654321.12345, 3 );
println!("Another formatted number: {}", another_formatted );
let datetime = kson_datetime(1694444030 );
println!("Local datetime: {}", datetime );
let datetime = kson_datetime(kson_time() );
println!("Local datetime: {}", datetime );
let another_datetime = kson_datetime(kson_microtime() );
println!("Another local datetime: {}", another_datetime );
kson!(thing);
kson!( thing["unixTime"] = kson_time() );
kson!( thing["now_time"] = kson_datetime(kson_microtime()) );
kson!( thing["thing_r"] = kson_rand(1, 99999999) );
kson!( thing["numberFormat"] = kson_number_format(123498.75456789, 5) );
println!("{:#?}",thing );
kson();
}