# Check that multiple features can be enabled.
from __future__ import unicode_literals, print_function

import sys
import unittest
from . import test_support


class TestMultipleFeatures(unittest.TestCase):

    def test_unicode_literals(self):
        self.assertIsInstance("", unicode)

    def test_print_function(self):
        with test_support.captured_output("stderr") as s:
            print("foo", file=sys.stderr)
        self.assertEqual(s.getvalue(), "foo\n")


def test_main():
    test_support.run_unittest(TestMultipleFeatures)
