Exemple #1
0
class GenerationTest(object):
    """Test for generate() method."""
    @classmethod
    def setUpClass(self):
        with open("./common/_data.json", 'r', encoding="utf-8") as file:
            self._DATA = json.load(file)

        # create a MarkovChain instance for testing.
        self.chain = MarkovChain()
        self.chain._chain = self._DATA[self.text_name]["chain"][
            self.chain_window]

        # create a generate() parameters.
        self.max_words = 20  # default.
        self.max_length = self.max_words * 10  # default.

        # create a test parameters.
        self.number_of_tests = 50

    def test_empty_text(self):
        generated_text = self.chain.generate(max_words=self.max_words,
                                             max_length=self.max_length)
        self.assertNotEqual(
            generated_text, '',
            "The text with the default data cannot be an empty")

    def test_type_text(self):
        generated_text = self.chain.generate(max_words=self.max_words,
                                             max_length=self.max_length)
        self.assertIsInstance(generated_text, str,
                              "The text should have a str type")

    def test_words_length(self):
        # self.subTest not needed here.
        # if first failure, then a chain already incorrect.
        for i in range(self.number_of_tests):
            generated_text = self.chain.generate(max_words=self.max_words,
                                                 max_length=self.max_length)
            self.assertTrue(
                len(generated_text.split()) <= self.max_words,
                "A count of words in the text cannot be > max_words")

    def test_length_text(self):
        # self.subTest not needed here.
        # if first failure, then a chain already incorrect.
        for i in range(self.number_of_tests):
            generated_text = self.chain.generate(max_words=self.max_words,
                                                 max_length=self.max_length)
            self.assertTrue(
                len(generated_text) <= self.max_length,
                "A length of the text cannot be > max_length")
Exemple #2
0
def instance_arguments(text):
    """Instance arguments example."""
    chain = MarkovChain("Hard test MarkovChain instance", window=2)
    chain.init(text)
    chain.create()
    print(chain.generate())
Exemple #3
0
def generation_arguments(text):
    """Generation arguments example."""
    chain = MarkovChain("Insane test MarkovChain instance")
    chain.init(text)
    chain.create()
    return chain.generate(start="You", max_words=10, max_length=20)
Exemple #4
0
def basic_usage(text):
    """Basic usage example."""
    chain = MarkovChain("Simple test MarkovChain instance")
    chain.init(text)
    chain.create()
    print(chain.generate())