def test_render(
    arg: Union[str, Number, Sequence[Union[str, Number]]],
    exp: str,
) -> None:
    svs = ScaledValueString(arg)
    assert svs.render() == exp
    assert str(svs) == exp
Пример #2
0
def compile_string(ast_string: ast.String) -> ScaledValueString:
    return ScaledValueString([
        part.string if isinstance(part, ast.Substring) else
        part.number if isinstance(part, ast.InterpolatedValue) else ""
        for part in ast_string.substrings
    ])
Пример #3
0
def normalise_output_name(name: ScaledValueString) -> ScaledValueString:
    """Normalise an output name (simply ignoring case and trailing white-space)"""
    return name.strip().lower()
def test_render_custom_formatters() -> None:
    svs = ScaledValueString(["foo", 123])
    assert (svs.render(
        format_number=lambda n: str(-n),
        format_string=lambda s: s.upper(),
    ) == "FOO-123")
def test_strip() -> None:
    assert ScaledValueString(["  Foo ",
                              123]).strip() == ScaledValueString(["Foo ", 123])
    assert ScaledValueString([123, "  Foo "
                              ]).strip() == ScaledValueString([123, "  Foo"])
    assert ScaledValueString(["  Foo "]).strip() == ScaledValueString(["Foo"])
def test_constructor(
    arg: Union[str, Number, Sequence[Union[str, Number]]],
    exp: Tuple[Union[str, Number], ...],
) -> None:
    svs = ScaledValueString(arg)
    assert svs._string == exp
def test_upper() -> None:
    assert ScaledValueString(["Foo",
                              123]).upper() == ScaledValueString(["FOO", 123])
def test_lower() -> None:
    assert ScaledValueString(["Foo",
                              123]).lower() == ScaledValueString(["foo", 123])
def test_scale(string: ScaledValueString, mul: Number,
               exp: ScaledValueString) -> None:
    assert string.scale(mul) == exp
    assert str(svs) == exp


def test_render_custom_formatters() -> None:
    svs = ScaledValueString(["foo", 123])
    assert (svs.render(
        format_number=lambda n: str(-n),
        format_string=lambda s: s.upper(),
    ) == "FOO-123")


@pytest.mark.parametrize(
    "a, b, exp_equal",
    [
        # Empty
        (ScaledValueString([]), ScaledValueString([]), True),
        # Just strings
        (ScaledValueString("foo"), ScaledValueString("foo"), True),
        (ScaledValueString("foo"), ScaledValueString("bar"), False),
        # Just numbers
        (ScaledValueString(123), ScaledValueString(123), True),
        (ScaledValueString(123.0), ScaledValueString(123), True),
        (ScaledValueString(123), ScaledValueString(321), False),
        # Combination
        (ScaledValueString(["foo", 1]), ScaledValueString(["foo", 1]), True),
        (ScaledValueString(["foo", 1]), ScaledValueString(["bar", 1]), False),
        (ScaledValueString(["foo", 1]), ScaledValueString(["foo", 2]), False),
        (ScaledValueString("foo1"), ScaledValueString(["foo", 1]), False),
    ],
)
def test_eq(a: ScaledValueString, b: ScaledValueString,
Пример #11
0
def render_scaled_value_string(string: SVS) -> str:
    return string.render(
        format_number=lambda number: t(
            "span", render_number(number), class_="rg-scaled-value"),
        format_string=html.escape,
    )