def test_guess_test():
    with tempfile.TemporaryDirectory() as dirname:
        copy_fixtures(dirname, nb_times=10)

        report = guesser.Guess().test(dirname)
        assert 0 <= report['overall-accuracy'] <= 1
        assert report['per-language']['C']['nb-files'] == 10
        assert report['per-language']['Python']['nb-files'] == 10
def test_extract_from_files():
    with tempfile.TemporaryDirectory() as dirname:
        copy_fixtures(dirname, nb_times=10)

        files = utils.search_files(dirname, EXTENSIONS)
        arrays = utils.extract_from_files(files, LANGUAGES)

        assert len(arrays) == 2
        assert all(len(values) == 20 for values in arrays)
def test_search_files():
    with tempfile.TemporaryDirectory() as dirname:
        copy_fixtures(dirname)

        # Not enough files in the directory
        with pytest.raises(GuesslangError):
            utils.search_files(dirname, EXTENSIONS)

    with tempfile.TemporaryDirectory() as dirname:
        copy_fixtures(dirname, nb_times=10)

        files = utils.search_files(dirname, EXTENSIONS)
        assert len(files) == 20
def test_guess_learn():
    with tempfile.TemporaryDirectory() as dirname:
        copy_fixtures(dirname, nb_times=10)

        # Cannot learn using default model
        with pytest.raises(GuesslangError):
            guesser.Guess().learn(dirname)

    temp_model_dir = tempfile.TemporaryDirectory()
    with tempfile.TemporaryDirectory() as dirname:
        copy_fixtures(dirname, nb_times=10)

        accuracy = guesser.Guess(temp_model_dir.name).learn(dirname)
        assert 0 <= accuracy <= 1

    try:
        temp_model_dir.cleanup()
    except OSError:
        # Occures on Windows only
        # - OSError: [WinError 145] The directory is not empty
        pass