1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
#![cfg_attr(feature = "dev", allow(unstable_features))] #![cfg_attr(feature = "dev", feature(plugin))] #![cfg_attr(feature = "dev", plugin(clippy))] #![feature(associated_consts)] #![feature(specialization)] extern crate rand; pub mod helper; pub mod locales; pub use locales::en::Faker; mod fake; pub use fake::Fake; pub mod faker; #[macro_export] macro_rules! fake { ($locale:ident; $cat:ident . $m:ident ($($args:expr),+)) => (<$crate::locales::$locale::Faker as $crate::faker::$cat>::$m($($args),+)); ($locale:ident; $cat:ident . $m:ident) => (<$crate::locales::$locale::Faker as $crate::faker::$cat>::$m()); ($cat:ident . $m:ident ($($args:expr),+)) => (<$crate::locales::en::Faker as $crate::faker::$cat>::$m($($args),+)); ($cat:ident . $m:ident) => (<$crate::locales::en::Faker as $crate::faker::$cat>::$m()); } #[cfg(test)] mod tests { use super::faker::*; #[test] fn lorem_usage() { println!("{:?}", <Faker as Lorem>::word()); println!("{:?}", <Faker as Lorem>::words(10)); println!("{:?}", <Faker as Lorem>::sentence(4, 6)); println!("{:?}", <Faker as Lorem>::sentences(10)); println!("{:?}", <Faker as Lorem>::paragraph(7, 3)); println!("{:?}", <Faker as Lorem>::paragraphs(3)); } #[test] fn name_usage() { println!("{:?}", <Faker as Name>::first_name()); println!("{:?}", <Faker as Name>::last_name()); println!("{:?}", <Faker as Name>::name()); println!("{:?}", <Faker as Name>::name_with_middle()); println!("{:?}", <Faker as Name>::title_descriptor()); println!("{:?}", <Faker as Name>::title_level()); println!("{:?}", <Faker as Name>::title_job()); println!("{:?}", <Faker as Name>::title()); use super::locales::zh_tw; println!("{}", <zh_tw::Faker as Name>::first_name()); println!("{}", <zh_tw::Faker as Name>::last_name()); println!("{}", <zh_tw::Faker as Name>::name()); println!("{:?}", <zh_tw::Faker as Name>::name_with_middle()); println!("{:?}", <zh_tw::Faker as Name>::title_descriptor()); println!("{:?}", <zh_tw::Faker as Name>::title_level()); println!("{:?}", <zh_tw::Faker as Name>::title_job()); println!("{:?}", <zh_tw::Faker as Name>::title()); } #[test] fn number_usage() { println!("{:?}", <Faker as Number>::digit()); println!("{:?}", <Faker as Number>::number(10)); println!("{:?}", <Faker as Number>::between(5, 10)); println!("{:?}", <Faker as Number>::between(5.0_f32, 10.0_f32)); } #[test] fn boolean_usage() { println!("{:?}", <Faker as Boolean>::boolean()); } #[test] fn internet_usage() { println!("{:?}", <Faker as Internet>::free_email_provider()); println!("{:?}", <Faker as Internet>::domain_suffix()); println!("{:?}", <Faker as Internet>::user_name()); println!("{:?}", <Faker as Internet>::free_email()); println!("{:?}", <Faker as Internet>::safe_email()); println!("{:?}", <Faker as Internet>::password(8, 20)); } #[test] fn company_usage() { println!("{:?}", <Faker as Company>::suffix()); println!("{:?}", <Faker as Company>::name()); println!("{:?}", <Faker as Company>::buzzword()); println!("{:?}", <Faker as Company>::catch_phase()); println!("{:?}", <Faker as Company>::bs()); println!("{:?}", <Faker as Company>::profession()); println!("{:?}", <Faker as Company>::industry()); } #[test] fn address_usage() { println!("{:?}", <Faker as Address>::time_zone()); println!("{:?}", <Faker as Address>::city_prefix()); println!("{:?}", <Faker as Address>::city_suffix()); println!("{:?}", <Faker as Address>::street_suffix()); println!("{:?}", <Faker as Address>::state()); println!("{:?}", <Faker as Address>::state_abbr()); println!("{:?}", <Faker as Address>::city()); println!("{:?}", <Faker as Address>::street_name()); println!("{:?}", <Faker as Address>::building_number()); println!("{:?}", <Faker as Address>::street_address()); println!("{:?}", <Faker as Address>::secondary_address()); println!("{:?}", <Faker as Address>::zip()); println!("{:?}", <Faker as Address>::postcode()); println!("{:?}", <Faker as Address>::latitude()); println!("{:?}", <Faker as Address>::longitude()); } #[test] fn phone_number_usage() { println!("{:?}", <Faker as PhoneNumber>::phone_number()); println!("{:?}", <Faker as PhoneNumber>::phone_number_with_format("N#######")); println!("{:?}", <Faker as PhoneNumber>::cell_number()); } #[test] fn macro_test() { println!("{:?}", fake!(Lorem.word)); println!("{:?}", fake!(Number.number(10))); println!("{:?}", fake!(Lorem.sentence(4, 6))); println!("{:?}", fake!(zh_tw; Name.name)); } }