From 7d80c7d7b6c983cd631986b3c74672389c8916d9 Mon Sep 17 00:00:00 2001 From: schneefux Date: Tue, 30 Dec 2014 19:09:49 +0100 Subject: Split unittests into separate files and move them to tests/ --- tests/test_g2p.py | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/test_g2p.py (limited to 'tests/test_g2p.py') diff --git a/tests/test_g2p.py b/tests/test_g2p.py new file mode 100644 index 0000000..e18ebff --- /dev/null +++ b/tests/test_g2p.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8-*- +import unittest +import tempfile +import mock +from client import g2p + + +def phonetisaurus_installed(): + try: + g2p.PhonetisaurusG2P(**g2p.PhonetisaurusG2P.get_config()) + except OSError: + return False + else: + return True + + +@unittest.skipUnless(phonetisaurus_installed, + "Phonetisaurus or fst_model not present") +class TestG2P(unittest.TestCase): + + def setUp(self): + self.g2pconverter = g2p.PhonetisaurusG2P( + **g2p.PhonetisaurusG2P.get_config()) + self.words = ['GOOD', 'BAD', 'UGLY'] + + def testTranslateWord(self): + for word in self.words: + self.assertIn(word, self.g2pconverter.translate(word).keys()) + + def testTranslateWords(self): + results = self.g2pconverter.translate(self.words).keys() + for word in self.words: + self.assertIn(word, results) + + +class TestPatchedG2P(TestG2P): + class DummyProc(object): + def __init__(self, *args, **kwargs): + self.returncode = 0 + + def communicate(self): + return ("GOOD\t9.20477\t G UH D \n" + + "GOOD\t14.4036\t G UW D \n" + + "GOOD\t16.0258\t G UH D IY \n" + + "BAD\t0.7416\t B AE D \n" + + "BAD\t12.5495\t B AA D \n" + + "BAD\t13.6745\t B AH D \n" + + "UGLY\t12.572\t AH G L IY \n" + + "UGLY\t17.9278\t Y UW G L IY \n" + + "UGLY\t18.9617\t AH G L AY \n", "") + + def setUp(self): + with mock.patch('client.g2p.diagnose.check_executable', + return_value=True): + with tempfile.NamedTemporaryFile() as f: + conf = g2p.PhonetisaurusG2P.get_config().items() + with mock.patch.object(g2p.PhonetisaurusG2P, 'get_config', + classmethod(lambda cls: dict(conf + + [('fst_model', f.name)]))): + super(self.__class__, self).setUp() + + def testTranslateWord(self): + with mock.patch('subprocess.Popen', + return_value=TestPatchedG2P.DummyProc()): + super(self.__class__, self).testTranslateWord() + + def testTranslateWords(self): + with mock.patch('subprocess.Popen', + return_value=TestPatchedG2P.DummyProc()): + super(self.__class__, self).testTranslateWords() -- cgit v1.3.1