PHP 8.5.2
Preview: test_formmethod.py Size: 4.27 KB
/lib/python3/dist-packages/twisted/test/test_formmethod.py

# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
from __future__ import annotations

"""
Test cases for formmethod module.
"""

from typing import Callable, Iterable

from typing import Concatenate, ParamSpec

from twisted.python import formmethod
from twisted.trial import unittest

_P = ParamSpec("_P")


class ArgumentTests(unittest.TestCase):
    def argTest(
        self,
        argKlass: Callable[Concatenate[str, _P], formmethod.Argument],
        testPairs: Iterable[tuple[object, object]],
        badValues: Iterable[object],
        *args: _P.args,
        **kwargs: _P.kwargs,
    ) -> None:
        arg = argKlass("name", *args, **kwargs)
        for val, result in testPairs:
            self.assertEqual(arg.coerce(val), result)
        for val in badValues:
            self.assertRaises(formmethod.InputError, arg.coerce, val)

    def test_argument(self) -> None:
        """
        Test that corce correctly raises NotImplementedError.
        """
        arg = formmethod.Argument("name")
        self.assertRaises(NotImplementedError, arg.coerce, "")

    def testString(self) -> None:
        self.argTest(formmethod.String, [("a", "a"), (1, "1"), ("", "")], ())
        self.argTest(
            formmethod.String, [("ab", "ab"), ("abc", "abc")], ("2", ""), min=2
        )
        self.argTest(
            formmethod.String, [("ab", "ab"), ("a", "a")], ("223213", "345x"), max=3
        )
        self.argTest(
            formmethod.String,
            [("ab", "ab"), ("add", "add")],
            ("223213", "x"),
            min=2,
            max=3,
        )

    def testInt(self) -> None:
        self.argTest(
            formmethod.Integer, [("3", 3), ("-2", -2), ("", None)], ("q", "2.3")
        )
        self.argTest(
            formmethod.Integer, [("3", 3), ("-2", -2)], ("q", "2.3", ""), allowNone=0
        )

    def testFloat(self) -> None:
        self.argTest(
            formmethod.Float, [("3", 3.0), ("-2.3", -2.3), ("", None)], ("q", "2.3z")
        )
        self.argTest(
            formmethod.Float,
            [("3", 3.0), ("-2.3", -2.3)],
            ("q", "2.3z", ""),
            allowNone=0,
        )

    def testChoice(self) -> None:
        choices = [("a", "apple", "an apple"), ("b", "banana", "ook")]
        self.argTest(
            formmethod.Choice,
            [("a", "apple"), ("b", "banana")],
            ("c", 1),
            choices=choices,
        )

    def testFlags(self) -> None:
        flags = [("a", "apple", "an apple"), ("b", "banana", "ook")]
        self.argTest(
            formmethod.Flags,
            [(["a"], ["apple"]), (["b", "a"], ["banana", "apple"])],
            (["a", "c"], ["fdfs"]),
            flags=flags,
        )

    def testBoolean(self) -> None:
        tests = [("yes", 1), ("", 0), ("False", 0), ("no", 0)]
        self.argTest(formmethod.Boolean, tests, ())

    def test_file(self) -> None:
        """
        Test the correctness of the coerce function.
        """
        arg = formmethod.File("name", allowNone=0)
        self.assertEqual(arg.coerce("something"), "something")
        self.assertRaises(formmethod.InputError, arg.coerce, None)
        arg2 = formmethod.File("name")
        self.assertIsNone(arg2.coerce(None))

    def testDate(self) -> None:
        goodTests = {
            ("2002", "12", "21"): (2002, 12, 21),
            ("1996", "2", "29"): (1996, 2, 29),
            ("", "", ""): None,
        }.items()
        badTests = [
            ("2002", "2", "29"),
            ("xx", "2", "3"),
            ("2002", "13", "1"),
            ("1999", "12", "32"),
            ("2002", "1"),
            ("2002", "2", "3", "4"),
        ]
        self.argTest(formmethod.Date, goodTests, badTests)

    def testRangedInteger(self) -> None:
        goodTests = {"0": 0, "12": 12, "3": 3}.items()
        badTests = ["-1", "x", "13", "-2000", "3.4"]
        self.argTest(formmethod.IntegerRange, goodTests, badTests, 0, 12)

    def testVerifiedPassword(self) -> None:
        goodTests = {("foo", "foo"): "foo", ("ab", "ab"): "ab"}.items()
        badTests = [
            ("ab", "a"),
            ("12345", "12345"),
            ("", ""),
            ("a", "a"),
            ("a",),
            ("a", "a", "a"),
        ]
        self.argTest(formmethod.VerifiedPassword, goodTests, badTests, min=2, max=4)

Directory Contents

Dirs: 1 × Files: 104

Name Size Perms Modified Actions
- drwxr-xr-x 2026-01-08 12:56:24
Edit Download
1.46 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
654 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
34.88 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
18.40 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.63 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.25 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
172 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
172 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
925 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
400 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
566 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
123 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
214 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
983 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
233 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
268 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
297 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
178 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
220 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
739 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
787 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
130 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.15 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.34 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
60 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
81 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
48 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
5.23 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.72 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.14 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
2.00 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.06 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.13 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.55 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.45 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
902 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
894 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download
5.06 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
3.66 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
25.47 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
108.04 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
33.34 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
17.75 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.43 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
20.84 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
143.37 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
13.01 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
6.90 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
9.60 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
4.46 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
7.28 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.89 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
4.27 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
126.96 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
2.65 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
3.19 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
6.56 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
45.38 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
9.58 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
13.31 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
15.54 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
36.86 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
17.79 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
13.99 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
2.12 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
24.69 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
17.84 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
6.38 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
73.64 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
12.23 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
14.73 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
26.02 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
32.28 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
4.32 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
86.29 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
7.16 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
3.63 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
7.40 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
23.89 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.65 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.91 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
24.90 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
5.53 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
17.09 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
22.73 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
113.84 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.97 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
12.43 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
5.10 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.67 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
47.73 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
64.26 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
12.73 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
6.47 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
3.26 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
21.64 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
12.90 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
1.69 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
72.29 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
6.13 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
26.79 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
13.26 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
22.76 KB lrw-r--r-- 2024-08-27 10:30:39
Edit Download
475 B lrw-r--r-- 2024-08-27 10:30:39
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).