# coding: utf-8
"""Tests for the elpy.yapf module"""

import unittest
import os

from elpy import yapfutil
from elpy.rpc import Fault
from elpy.tests.support import BackendTestCase


@unittest.skipIf(yapfutil.YAPF_NOT_SUPPORTED,
                 'yapf not supported for current python version')
class YAPFTestCase(BackendTestCase):
    def setUp(self):
        if yapfutil.YAPF_NOT_SUPPORTED:
            raise unittest.SkipTest

    def test_fix_code_should_throw_error_for_invalid_code(self):
        src = 'x = '
        self.assertRaises(Fault, yapfutil.fix_code, src, os.getcwd())

    def test_fix_code(self):
        testdata = [
            ('x=       123\n', 'x = 123\n'),
            ('x=1; \ny=2 \n', 'x = 1\ny = 2\n'),
        ]
        for src, expected in testdata:
            self._assert_format(src, expected)

    def _assert_format(self, src, expected):
        new_block = yapfutil.fix_code(src, os.getcwd())
        self.assertEqual(new_block, expected)
