
import unittest
import os
from bleualign.align import Aligner
import io

class TestS2tAndT2s(unittest.TestCase):
	def setUp(self):
		pass
	def test_1989googlefr(self):
		current_path = os.path.dirname(os.path.abspath(__file__))
		eval1989de = os.path.join(current_path, '..', 'eval', 'eval1989.de')
		eval1989fr = os.path.join(current_path, '..', 'eval', 'eval1989.fr')
		googlefr = os.path.join(current_path, '..', 'eval', 'eval1989.google.fr')
		self._sameResultForEval(eval1989de, eval1989fr, [googlefr], [])
	def test_same1989googlefr(self):
		current_path = os.path.dirname(os.path.abspath(__file__))
		eval1989de = os.path.join(current_path, '..', 'eval', 'eval1989.de')
		eval1989fr = os.path.join(current_path, '..', 'eval', 'eval1989.fr')
		googlefr = os.path.join(current_path, '..', 'eval', 'eval1989.google.fr')
		with io.open(eval1989de) as f:
			de_small = f.readlines()[602:625]
		with io.open(eval1989fr) as f:
			fr_small = f.readlines()[608:634]
		with io.open(googlefr) as f:
			go_small = f.readlines()[602:625]
		self._sameResultForEval(de_small, fr_small, [go_small], [])
	def _sameResultForEval(self,de,fr,s2t,t2s):
		options = {
			'srcfile':de,
			'targetfile':fr,
			'srctotarget':s2t,
			'targettosrc':t2s,
			'verbosity':0,
			}
		a = Aligner(options)
		a.mainloop()
		output_src, output_target = a.results()
		s2t_src = output_src.getvalue().splitlines()
		s2t_trg = output_target.getvalue().splitlines()
		options = {
			'srcfile':fr,
			'targetfile':de,
			'srctotarget':t2s,
			'targettosrc':s2t,
			'verbosity':0,
			}
		a = Aligner(options)
		a.mainloop()
		output_src, output_target = a.results()
		t2s_src = output_src.getvalue().splitlines()
		t2s_trg = output_target.getvalue().splitlines()
		self.assertEqual(s2t_src, t2s_trg)
		self.assertEqual(s2t_trg, t2s_src)

if __name__ == '__main__':
	unittest.main()
