use english::*;
fn main() {
let subject_number = Number::Plural;
let run = Verb::present_participle("run"); let child = Noun::from("child").with_specifier(run); let subject = English::noun(child, &subject_number); let verb = English::verb(
"steal",
&Person::Third,
&subject_number,
&Tense::Past,
&Form::Finite,
); let object = Noun::count_with_number("potato", 7);
let sentence = format!("The {} {} {}.", subject, verb, object);
assert_eq!(sentence, "The running children stole 7 potatoes.");
let jeans = Noun::from("pair").with_complement("of jeans");
assert_eq!(Noun::count_with_number(jeans, 3), "3 pairs of jeans");
assert_eq!(English::noun("cat", &Number::Plural), "cats");
assert_eq!(Noun::plural("die2"), "dice");
assert_eq!(Noun::count("man", 2), "men");
assert_eq!(Noun::count_with_number("nickel", 3), "3 nickels");
assert_eq!(English::noun("sheep", &Number::Plural), "sheep");
let pick_up = Verb::from("pick").with_particle("up");
assert_eq!(Verb::past(&pick_up,), "picked up");
assert_eq!(Verb::present_participle("walk"), "walking");
assert_eq!(Verb::past_participle("go"), "gone");
assert_eq!(Verb::past("lie"), "lay");
assert_eq!(Verb::past("lie2"), "lied");
assert_eq!(
English::verb(
"be",
&Person::First,
&Number::Singular,
&Tense::Present,
&Form::Finite
),
"am"
);
assert_eq!(English::adj("bad", &Degree::Comparative), "more bad");
assert_eq!(English::adj("bad", &Degree::Superlative), "most bad");
assert_eq!(Adj::comparative("bad2"), "badder");
assert_eq!(Adj::superlative("bad2"), "baddest");
assert_eq!(Adj::comparative("bad3"), "worse");
assert_eq!(Adj::superlative("bad3"), "worst");
assert_eq!(Adj::positive("bad3"), "bad");
assert_eq!(
English::pronoun(
&Person::First,
&Number::Singular,
&Gender::Neuter,
&Case::PersonalPossesive
),
"my"
);
assert_eq!(
English::pronoun(
&Person::First,
&Number::Singular,
&Gender::Neuter,
&Case::Possessive
),
"mine"
);
assert_eq!(English::add_possessive("dog"), "dog's");
assert_eq!(English::add_possessive("dogs"), "dogs'");
}