示例#1
0
 def test_eq(self):
     # Arrange
     s1 = mbe.Something(10)
     s2 = mbe.Something(10)
     s3 = mbe.Something(11)
     n1 = mbe.Nothing(10)
     # Act
     # Assert
     self.assertTrue(s1 == s2)
     self.assertFalse(s1 == s3)
     self.assertFalse(s1 == n1)
示例#2
0
    def test_lift_WhenLiftedFunctionRaisesException_NothingIsReturn(self):
        # Arrange
        def triple(x):
            return 3 / x

        lifted_f = mbe.Maybe.lift(triple)
        arg = mbe.Something(0)
        expected = mbe.Nothing()
        # Act
        result = lifted_f(arg)
        # Assert
        self.assertEqual(result, expected)
示例#3
0
    def test_lift_WhenLiftedFunctionCalledOnNothing_FailureIsNothing(self):
        # Arrange
        def triple(x):
            return 3 * x

        lifted_f = mbe.Maybe.lift(triple)
        arg = mbe.Nothing()
        expected = mbe.Nothing()
        # Act
        result = lifted_f(arg)
        # Assert
        self.assertEqual(result, expected)
示例#4
0
    def test_liftn_WhenImproperNumberOfArgumentsGiven_NothingIsReturned(self):
        # Arrange
        def sumThree(x, y, z):
            return x + y + z

        lifted_f = mbe.Maybe.liftn(sumThree)
        arg1 = mbe.Something(1)
        arg2 = mbe.Something(2)
        # Act
        result = lifted_f(arg1, arg2)
        expected = mbe.Nothing()
        # Assert
        self.assertEqual(result, expected)
示例#5
0
    def test_liftn_WhenNotCallableIsGiven_NothingIsReturned(self):
        # Arrange
        def sumThree(x, y, z):
            return x + y / z

        lifted_f = mbe.Maybe.liftn(sumThree)
        arg1 = mbe.Something(1)
        arg2 = mbe.Something(2)
        # Act
        result = lifted_f(arg1, arg2)
        expected = mbe.Nothing()
        # Assert
        self.assertEqual(result, expected)
示例#6
0
    def test_lift_WhenLiftedFunctionCalledOnSomething_SomethingIsReturned(
            self):
        # Arrange
        def triple(x):
            return 3 * x

        lifted_f = mbe.Maybe.lift(triple)
        arg = mbe.Something(5)
        expected = mbe.Something(15)
        # Act
        result = lifted_f(arg)
        # Assert
        self.assertEqual(result, expected)
示例#7
0
    def test_liftn_WhenLiftedFunctionRaisesException_NothingIsReturn(self):
        # Arrange
        def sumThree(x, y, z):
            return x + y / z

        lifted_f = mbe.Maybe.liftn(sumThree)
        arg1 = mbe.Something(1)
        arg2 = mbe.Something(2)
        arg3 = mbe.Something(0)
        # Act
        result = lifted_f(arg1, arg2, arg3)
        expected = mbe.Nothing()
        # Assert
        self.assertEqual(result, expected)
示例#8
0
    def test_liftn_WhenLiftedFunctionCalledOnNothing_NothingIsReturn(self):
        # Arrange
        def sumThree(x, y, z):
            return x + y + z

        lifted_f = mbe.Maybe.liftn(sumThree)
        arg1 = mbe.Something(1)
        arg2 = mbe.Nothing(4)
        arg3 = mbe.Something(3)
        # Act
        result = lifted_f(arg1, arg2, arg3)
        expected = mbe.Nothing()
        # Assert
        self.assertEqual(result, expected)
示例#9
0
 def test_unit(self):
     # Arrange
     expected = mbe.Nothing()
     # Act
     result = mbe.Nothing.unit("error")
     # Assert
     self.assertEqual(result, expected)
示例#10
0
 def test_unit(self):
     # Arrange
     expected = mbe.Something(123)
     # Act
     result = mbe.Something.unit(123)
     # Assert
     self.assertEqual(result, expected)
示例#11
0
    def test_liftn_WhenOneArgumentFunctionIsGiven_liftIsReproduced(self):
        # Arrange
        def double(x):
            return 2 * x

        lifted_fn = mbe.Maybe.liftn(double)
        lifted_f = mbe.Maybe.lift(double)
        arg = mbe.Something(5)
        # Act
        result_f = lifted_f(arg)
        result_fn = lifted_fn(arg)
        # Assert
        self.assertEqual(result_f, result_fn)
示例#12
0
 def test_isSomething_isNothing(self):
     nothing = mbe.Nothing()
     self.assertFalse(nothing.isSomething)
     self.assertTrue(nothing.isNothing)
示例#13
0
 def test_isSomething_isNothing(self):
     something = mbe.Something(123)
     self.assertTrue(something.isSomething)
     self.assertFalse(something.isNothing)