import unittest from mycroft.util.parse import normalize class TestNormalize(unittest.TestCase): def test_articles(self): self.assertEqual(normalize("this is a test", remove_articles=True), "this is test") self.assertEqual(normalize("this is the test", remove_articles=True), "this is test") self.assertEqual(normalize("and another test", remove_articles=True), "and another test") self.assertEqual(normalize("this is an extra test", remove_articles=False), "this is an extra test") def test_spaces(self): self.assertEqual(normalize(" this is a test"), "this is test") self.assertEqual(normalize(" this is a test "), "this is test") self.assertEqual(normalize(" this is one test"), "this is 1 test") def test_numbers(self): self.assertEqual(normalize("this is a one two three test"), "this is 1 2 3 test") self.assertEqual(normalize(" it's a four five six test"), "it is 4 5 6 test") self.assertEqual(normalize("it's a seven eight nine test"), "it is 7 8 9 test") self.assertEqual(normalize("it's a seven eight nine test"), "it is 7 8 9 test") self.assertEqual(normalize("that's a ten eleven twelve test"), "that is 10 11 12 test") self.assertEqual(normalize("that's a thirteen fourteen test"), "that is 13 14 test") self.assertEqual(normalize("that's fifteen sixteen seventeen"), "that is 15 16 17") self.assertEqual(normalize("that's eighteen nineteen twenty"), "that is 18 19 20") def test_contractions(self): self.assertEqual(normalize("ain't"), "is not") self.assertEqual(normalize("aren't"), "are not") self.assertEqual(normalize("can't"), "can not") self.assertEqual(normalize("could've"), "could have") self.assertEqual(normalize("couldn't"), "could not") self.assertEqual(normalize("didn't"), "did not") self.assertEqual(normalize("doesn't"), "does not") self.assertEqual(normalize("don't"), "do not") self.assertEqual(normalize("gonna"), "going to") self.assertEqual(normalize("gotta"), "got to") self.assertEqual(normalize("hadn't"), "had not") self.assertEqual(normalize("hadn't have"), "had not have") self.assertEqual(normalize("hasn't"), "has not") self.assertEqual(normalize("haven't"), "have not") # TODO: Ambiguous with "he had" self.assertEqual(normalize("he'd"), "he would") self.assertEqual(normalize("he'll"), "he will") # TODO: Ambiguous with "he has" self.assertEqual(normalize("he's"), "he is") # TODO: Ambiguous with "how would" self.assertEqual(normalize("how'd"), "how did") self.assertEqual(normalize("how'll"), "how will") # TODO: Ambiguous with "how has" and "how does" self.assertEqual(normalize("how's"), "how is") # TODO: Ambiguous with "I had" self.assertEqual(normalize("I'd"), "I would") self.assertEqual(normalize("I'll"), "I will") self.assertEqual(normalize("I'm"), "I am") self.assertEqual(normalize("I've"), "I have") self.assertEqual(normalize("I haven't"), "I have not") self.assertEqual(normalize("isn't"), "is not") self.assertEqual(normalize("it'd"), "it would") self.assertEqual(normalize("it'll"), "it will") # TODO: Ambiguous with "it has" self.assertEqual(normalize("it's"), "it is") self.assertEqual(normalize("it isn't"), "it is not") self.assertEqual(normalize("mightn't"), "might not") self.assertEqual(normalize("might've"), "might have") self.assertEqual(normalize("mustn't"), "must not") self.assertEqual(normalize("mustn't have"), "must not have") self.assertEqual(normalize("must've"), "must have") self.assertEqual(normalize("needn't"), "need not") self.assertEqual(normalize("oughtn't"), "ought not") self.assertEqual(normalize("shan't"), "shall not") # TODO: Ambiguous wiht "she had" self.assertEqual(normalize("she'd"), "she would") self.assertEqual(normalize("she hadn't"), "she had not") self.assertEqual(normalize("she'll"), "she will") self.assertEqual(normalize("she's"), "she is") self.assertEqual(normalize("she isn't"), "she is not") self.assertEqual(normalize("should've"), "should have") self.assertEqual(normalize("shouldn't"), "should not") self.assertEqual(normalize("shouldn't have"), "should not have") self.assertEqual(normalize("somebody's"), "somebody is") # TODO: Ambiguous with "someone had" self.assertEqual(normalize("someone'd"), "someone would") self.assertEqual(normalize("someone hadn't"), "someone had not") self.assertEqual(normalize("someone'll"), "someone will") # TODO: Ambiguous with "someone has" self.assertEqual(normalize("someone's"), "someone is") self.assertEqual(normalize("that'll"), "that will") # TODO: Ambiguous with "that has" self.assertEqual(normalize("that's"), "that is") # TODO: Ambiguous with "that had" self.assertEqual(normalize("that'd"), "that would") # TODO: Ambiguous with "there had" self.assertEqual(normalize("there'd"), "there would") self.assertEqual(normalize("there're"), "there are") # TODO: Ambiguous with "there has" self.assertEqual(normalize("there's"), "there is") # TODO: Ambiguous with "they had" self.assertEqual(normalize("they'd"), "they would") self.assertEqual(normalize("they'll"), "they will") self.assertEqual(normalize("they won't have"), "they will not have") self.assertEqual(normalize("they're"), "they are") self.assertEqual(normalize("they've"), "they have") self.assertEqual(normalize("they haven't"), "they have not") self.assertEqual(normalize("wasn't"), "was not") # TODO: Ambiguous wiht "we had" self.assertEqual(normalize("we'd"), "we would") self.assertEqual(normalize("we would've"), "we would have") self.assertEqual(normalize("we wouldn't"), "we would not") self.assertEqual(normalize("we wouldn't have"), "we would not have") self.assertEqual(normalize("we'll"), "we will") self.assertEqual(normalize("we won't have"), "we will not have") self.assertEqual(normalize("we're"), "we are") self.assertEqual(normalize("we've"), "we have") self.assertEqual(normalize("weren't"), "were not") self.assertEqual(normalize("what'd"), "what did") self.assertEqual(normalize("what'll"), "what will") self.assertEqual(normalize("what're"), "what are") # TODO: Ambiguous with "what has" / "what does") self.assertEqual(normalize("whats"), "what is") self.assertEqual(normalize("what's"), "what is") self.assertEqual(normalize("what've"), "what have") # TODO: Ambiguous with "when has" self.assertEqual(normalize("when's"), "when is") self.assertEqual(normalize("where'd"), "where did") # TODO: Ambiguous with "where has" / where does" self.assertEqual(normalize("where's"), "where is") self.assertEqual(normalize("where've"), "where have") # TODO: Ambiguous with "who had" "who did") self.assertEqual(normalize("who'd"), "who would") self.assertEqual(normalize("who'd've"), "who would have") self.assertEqual(normalize("who'll"), "who will") self.assertEqual(normalize("who're"), "who are") # TODO: Ambiguous with "who has" / "who does" self.assertEqual(normalize("who's"), "who is") self.assertEqual(normalize("who've"), "who have") self.assertEqual(normalize("why'd"), "why did") self.assertEqual(normalize("why're"), "why are") # TODO: Ambiguous with "why has" / "why does" self.assertEqual(normalize("why's"), "why is") self.assertEqual(normalize("won't"), "will not") self.assertEqual(normalize("won't've"), "will not have") self.assertEqual(normalize("would've"), "would have") self.assertEqual(normalize("wouldn't"), "would not") self.assertEqual(normalize("wouldn't've"), "would not have") self.assertEqual(normalize("ya'll"), "you all") self.assertEqual(normalize("y'all"), "you all") self.assertEqual(normalize("y'ain't"), "you are not") # TODO: Ambiguous with "you had" self.assertEqual(normalize("you'd"), "you would") self.assertEqual(normalize("you'd've"), "you would have") self.assertEqual(normalize("you'll"), "you will") self.assertEqual(normalize("you're"), "you are") self.assertEqual(normalize("you aren't"), "you are not") self.assertEqual(normalize("you've"), "you have") self.assertEqual(normalize("you haven't"), "you have not") def test_combinations(self): self.assertEqual(normalize("I couldn't have guessed there'd be two"), "I could not have guessed there would be 2") self.assertEqual(normalize("I wouldn't have"), "I would not have") self.assertEqual(normalize("I hadn't been there"), "I had not been there") self.assertEqual(normalize("I would've"), "I would have") self.assertEqual(normalize("it hadn't"), "it had not") self.assertEqual(normalize("it hadn't have"), "it had not have") self.assertEqual(normalize("it would've"), "it would have") self.assertEqual(normalize("she wouldn't have"), "she would not have") self.assertEqual(normalize("she would've"), "she would have") self.assertEqual(normalize("someone wouldn't have"), "someone would not have") self.assertEqual(normalize("someone would've"), "someone would have") self.assertEqual(normalize("what's the weather like"), "what is weather like") self.assertEqual(normalize("that's what I told you"), "that is what I told you") self.assertEqual(normalize("whats 8 + 4"), "what is 8 + 4") if __name__ == "__main__": unittest.main()