#!/usr/bin/env python3

from __future__ import division
from __future__ import print_function

import unittest

from is_anagram import is_anagram


class AnagramTests(unittest.TestCase):
    """
    Tests for Anagram.
    """

    def test_base_exercice(self):
        self.assertFalse(is_anagram("titi", "toto"))
        self.assertTrue(is_anagram("ironique", "onirique"))
        self.assertTrue(is_anagram("baignade", "badinage"))
        self.assertTrue(is_anagram("police", "picole"))

    def test_uppercase(self):
        self.assertTrue(is_anagram("Parisien", "Aspirine"))
        self.assertFalse(is_anagram("Parisien", "Parisiens"))

    # Comment the following line to force the check the bonus code
    @unittest.expectedFailure
    def test_bonus1_ignore_spaces(self):
        self.assertTrue(is_anagram("Tom Elvis Jedusor", "Je suis Voldemort"))
        self.assertTrue(is_anagram("Laurent Fabius", "Naturel abusif"))
        self.assertFalse(is_anagram("un deux trois", "trois deux un zero"))

    # Comment the following line to force the check the bonus code
    @unittest.expectedFailure
    def test_bonus2_ignore_ponctuation(self):
        self.assertTrue(is_anagram("Jean-Paul Sartre?", "Satan le parjure!"))
        self.assertTrue(is_anagram("Michel Onfray.", "Lyncher ma foi!!!"))
        self.assertFalse(is_anagram("Oui?", "Non?"))

    # Comment the following line to force the check the bonus code
    @unittest.expectedFailure
    def test_bonus3_unicode(self):
        self.assertTrue(
            is_anagram("Centrale nucléaire", "Le cancer et la ruine")
        )
        self.assertTrue(
            is_anagram(
                "Le réchauffement climatique",
                "Ce fuel qui tache le firmament"
            )
        )
        self.assertTrue(
            is_anagram("Matière à contredire?", "Rédaction téméraire!")
        )
        self.assertTrue(
            is_anagram(
                "Le commandant Cousteau",
                "Tout commença dans l'eau"
            )
        )


if __name__ == "__main__":
    unittest.main(verbosity=2)
