summaryrefslogtreecommitdiffstats
path: root/tests/test_terminal_io/test_terminal_size.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_terminal_io/test_terminal_size.py')
-rw-r--r--tests/test_terminal_io/test_terminal_size.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/test_terminal_io/test_terminal_size.py b/tests/test_terminal_io/test_terminal_size.py
new file mode 100644
index 0000000..ba14d18
--- /dev/null
+++ b/tests/test_terminal_io/test_terminal_size.py
@@ -0,0 +1,54 @@
+# coding: utf-8
+"""Test function in module."""
+
+import pytest
+
+from terminaltables.terminal_io import DEFAULT_HEIGHT, DEFAULT_WIDTH, INVALID_HANDLE_VALUE, IS_WINDOWS, terminal_size
+
+from tests.test_terminal_io import MockKernel32
+
+
+@pytest.mark.parametrize('stderr', [1, INVALID_HANDLE_VALUE])
+@pytest.mark.parametrize('stdout', [2, INVALID_HANDLE_VALUE])
+def test_windows(monkeypatch, stderr, stdout):
+ """Test function with IS_WINDOWS=True.
+
+ :param monkeypatch: pytest fixture.
+ :param int stderr: Mock handle value.
+ :param int stdout: Mock handle value.
+ """
+ monkeypatch.setattr('terminaltables.terminal_io.IS_WINDOWS', True)
+
+ kernel32 = MockKernel32(stderr=stderr, stdout=stdout)
+ width, height = terminal_size(kernel32)
+
+ if stderr == INVALID_HANDLE_VALUE and stdout == INVALID_HANDLE_VALUE:
+ assert width == DEFAULT_WIDTH
+ assert height == DEFAULT_HEIGHT
+ elif stdout == INVALID_HANDLE_VALUE:
+ assert width == 119
+ assert height == 29
+ elif stderr == INVALID_HANDLE_VALUE:
+ assert width == 75
+ assert height == 28
+ else:
+ assert width == 119
+ assert height == 29
+
+
+@pytest.mark.skipif(str(IS_WINDOWS))
+def test_nix(monkeypatch):
+ """Test function with IS_WINDOWS=False.
+
+ :param monkeypatch: pytest fixture.
+ """
+ # Test exception (no terminal within pytest).
+ width, height = terminal_size()
+ assert width == DEFAULT_WIDTH
+ assert height == DEFAULT_HEIGHT
+
+ # Test mocked.
+ monkeypatch.setattr('fcntl.ioctl', lambda *_: b'\x1d\x00w\x00\xca\x02\x96\x01')
+ width, height = terminal_size()
+ assert width == 119
+ assert height == 29