Beispiel #1
0
 def test_create_option(self):
     self.assertIsInstance(option.Option("A"), option.Full)
     self.assertIsInstance(option.Option(10), option.Full)
     self.assertIsInstance(option.Option(10, lambda x: x > 7), option.Full)
     self.assertIsInstance(option.Option(None), option.Empty)
     self.assertIsInstance(option.Option(False), option.Full)
     self.assertIsInstance(option.Option(0), option.Full)
     self.assertIsInstance(option.Option(False, checker=bool), option.Empty)
     self.assertIsInstance(option.Option(0, checker=bool), option.Empty)
     self.assertIsInstance(option.Option(10, lambda x: x > 70),
                           option.Empty)
Beispiel #2
0
    def test_lazy_orcall(self):
        def from_mimetype(request):
            # you can return both value or Option
            return request.get("mimetype", None)

        def from_extension(request):
            # you can return both value or Option
            return option.Option(request.get("url", None))\
                        .map(lambda s: s.split(".")[-1])

        # extract value from extension
        r = dict(url="myfile.png")
        self.assertEqual(
            "PNG",
            option.Option(r.get("type", None)).or_call(
                from_mimetype,
                r).or_call(from_extension,
                           r).map(operator.methodcaller("upper")).get_or(""))

        # extract value from mimetype
        r = dict(url="myfile.svg", mimetype="png")
        self.assertEqual(
            "PNG",
            option.Option(r.get("type", None)).or_call(
                from_mimetype,
                r).or_call(from_extension,
                           r).map(operator.methodcaller("upper")).get_or(""))

        # type is set directly
        r = dict(url="myfile.jpeg", mimetype="svg", type="png")
        self.assertEqual(
            "PNG",
            option.Option(r.get("type", None)).or_call(
                from_mimetype,
                r).or_call(from_extension,
                           r).map(operator.methodcaller("upper")).get_or(""))
Beispiel #3
0
 def from_extension(request):
     # you can return both value or Option
     return option.Option(request.get("url", None))\
                 .map(lambda s: s.split(".")[-1])
Beispiel #4
0
 def test_empty_check(self):
     self.assertTrue(option.Empty().empty)
     self.assertTrue(option.Option(None).empty)
     self.assertTrue(option.Option.from_call(lambda: None).empty)
     self.assertFalse(option.Option(10).empty)
     self.assertFalse(option.Full(10).empty)
Beispiel #5
0
 def parameter(self, name):
     return option.Option(self.get(name, None))
Beispiel #6
0
 def test_option_repr(self):
     self.assertEqual("Full(10)", repr(option.Full(10)))
     self.assertEqual("Full(in box!)", repr(option.Full("in box!")))
     self.assertEqual("Empty()", repr(option.Empty()))
     self.assertEqual("Empty()", repr(option.Option(None)))
Beispiel #7
0
 def test_stringify(self):
     self.assertEqual("Full(10)", str(option.Full(10)))
     self.assertEqual("Full(in box!)", str(option.Full("in box!")))
     self.assertEqual("Empty()", str(option.Empty()))
     self.assertEqual("Empty()", str(option.Option(None)))