should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View File

@@ -0,0 +1,151 @@
# fmt: off
import pytest
import subprocess
import sys
from typing import List
from conftest import ShellTest
import os
def test_readable_numbers(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering footer")
.statement("select 59986052 as count, 123456789 as count2, 9999999999 count3, -9999999999 count4;")
)
result = test.run()
result.check_stdout("(59.99 million)")
result.check_stdout("(123.46 million)")
result.check_stdout("(10.00 billion)")
result.check_stdout("(-10.00 billion)")
@pytest.mark.parametrize('test_rounding', [False, True])
def test_readable_numbers_exhaustive(shell, test_rounding):
query = "select "
for i in range(1, 20):
if i > 1:
query += ", "
if test_rounding:
query += '9' * i
else:
query += '1' + ('0' * i)
test = (
ShellTest(shell)
.statement(".large_number_rendering all")
.statement(".maxwidth 99999")
.statement(query)
)
result = test.run()
for unit in ['million', 'billion', 'trillion', 'quadrillion', 'quintillion']:
for number in ['1.00', '10.00', '100.00']:
if unit == 'quintillion' and number in ['10.00', '100.00']:
continue
result.check_stdout(number + " " + unit)
def test_readable_numbers_rounding(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering footer")
.statement(".maxwidth 99999")
.statement("select 1005000, 1004999, -1005000, -1004999;")
)
result = test.run()
result.check_stdout("(1.01 million)")
result.check_stdout("(1.00 million)")
result.check_stdout("(-1.01 million)")
result.check_stdout("(-1.00 million)")
def test_readable_rounding_edge_case(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering all")
.statement(".maxwidth 99999")
.statement("select 994999, 995000")
)
result = test.run()
result.check_stdout("1.00 million")
def test_readable_numbers_limit(shell):
test = (
ShellTest(shell)
.statement(".maxwidth 99999")
.statement(".large_number_rendering all")
.statement("select 18446744073709551616, -18446744073709551616, 9999999999999999999, -9999999999999999999;")
)
result = test.run()
result.check_stdout("10.00 quintillion")
result.check_stdout("-10.00 quintillion")
def test_decimal_separator(shell):
test = (
ShellTest(shell)
.statement(".decimal_sep ,")
.statement(".large_number_rendering all")
.statement("select 59986052, 59986052.5, 999999999.123456789, 1e20, 'nan'::double;")
)
result = test.run()
result.check_stdout("59,99 million")
result.check_stdout("1,00 billion")
def test_odd_floating_points(shell):
test = (
ShellTest(shell)
.statement("select 1e20, 'nan'::double;")
)
result = test.run()
result.check_stdout("nan")
def test_disable_readable_numbers(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering off")
.statement("select 123456789;")
)
result = test.run()
result.check_not_exist('(123.46 million)')
def test_large_number_rendering_all(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering all")
.statement("select 123456789 from range(10);")
)
result = test.run()
result.check_stdout('123.46 million')
result.check_not_exist('(123.46 million)')
def test_readable_numbers_columns(shell):
test = (
ShellTest(shell)
.statement(".columns")
.statement("select 123456789;")
)
result = test.run()
result.check_not_exist('(123.46 million)')
def test_readable_numbers_row_count(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering footer")
.statement("select r from range(1230000) t(r);")
)
result = test.run()
result.check_stdout('1.23 million rows')
def test_readable_numbers_row_count_wide(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering footer")
.statement("select r, r, r, r, r, r, r from range(1230000) t(r);")
)
result = test.run()
result.check_stdout('1.23 million rows')
def test_readable_numbers_row_count_wide_single_col(shell):
test = (
ShellTest(shell)
.statement(".large_number_rendering footer")
.statement("select concat(r, r, r, r, r, r, r) c from range(1230000) t(r);")
)
result = test.run()
result.check_stdout('1.23 million rows')