Custom detekt rule for logger usage check
[dcaegen2/collectors/hv-ves.git] / sources / hv-collector-test-utils / src / main / kotlin / org / onap / dcae / collectors / veshv / tests / utils / arrow.kt
1 /*
2  * ============LICENSE_START=======================================================
3  * dcaegen2-collectors-veshv
4  * ================================================================================
5  * Copyright (C) 2018 NOKIA
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.dcae.collectors.veshv.tests.utils
21
22 import arrow.core.Either
23 import arrow.core.identity
24 import org.assertj.core.api.AbstractAssert
25 import org.assertj.core.api.Assertions.assertThat
26 import org.assertj.core.api.ObjectAssert
27
28 /**
29  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
30  * @since September 2018
31  */
32 class EitherAssert<A, B>(actual: Either<A, B>)
33     : AbstractAssert<EitherAssert<A, B>, Either<A, B>>(actual, EitherAssert::class.java) {
34
35     fun isLeft(): EitherAssert<A, B> {
36         isNotNull()
37         isInstanceOf(Either.Left::class.java)
38         return myself
39     }
40
41     fun left(): ObjectAssert<A> {
42         isLeft()
43         val left =  actual.fold(
44                 ::identity,
45                 { throw AssertionError("should be left") })
46         return assertThat(left)
47     }
48
49     fun isRight(): EitherAssert<A, B> {
50         isNotNull()
51         isInstanceOf(Either.Right::class.java)
52         return myself
53     }
54
55     fun right(): ObjectAssert<B> {
56         isRight()
57         val right =  actual.fold(
58                 { throw AssertionError("should be right") },
59                 ::identity)
60         return assertThat(right)
61     }
62 }