Refactoring Netconf NetconfMessageUtils
[ccsdk/cds.git] / ms / blueprintsprocessor / functions / netconf-executor / src / test / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / functions / netconf / executor / core / NetconfMessageStateTest.kt
1 /*
2  * Copyright © 2019 Bell Canada
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.core
18
19 import org.junit.Test
20 import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.core.NetconfDeviceCommunicator.NetconfMessageState
21 import kotlin.test.assertEquals
22
23 class NetconfMessageStateTest {
24
25     private val charList: List<Char> = Char.MIN_VALUE.toInt().rangeTo(Char.MAX_VALUE.toInt())
26         .map { it -> it.toChar() }
27
28     @Test
29     fun `NO_MATCHING_PATTERN transitions`() {
30         assertEquals(NetconfMessageState.FIRST_BRACKET,
31             NetconfMessageState.NO_MATCHING_PATTERN.evaluateChar(']'))
32         assertEquals(NetconfMessageState.FIRST_LF,
33             NetconfMessageState.NO_MATCHING_PATTERN.evaluateChar('\n'))
34
35         charList.minus(listOf(']','\n')).forEach {
36             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
37                 NetconfMessageState.NO_MATCHING_PATTERN.evaluateChar(it))
38         }
39     }
40
41     @Test
42     fun `FIRST_BRACKET transitions`() {
43         assertEquals(NetconfMessageState.SECOND_BRACKET,
44             NetconfMessageState.FIRST_BRACKET.evaluateChar(']'))
45
46         charList.minus( ']').forEach {
47             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
48                 NetconfMessageState.FIRST_BRACKET.evaluateChar(it))
49         }
50     }
51
52     @Test
53     fun `SECOND_BRACKET transitions`() {
54         assertEquals(NetconfMessageState.FIRST_BIGGER,
55             NetconfMessageState.SECOND_BRACKET.evaluateChar('>'))
56
57         charList.minus('>').forEach {
58             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
59                 NetconfMessageState.SECOND_BRACKET.evaluateChar(it))
60         }
61     }
62
63     @Test
64     fun `FIRST_BIGGER transitions`() {
65         assertEquals(NetconfMessageState.THIRD_BRACKET,
66             NetconfMessageState.FIRST_BIGGER.evaluateChar(']'))
67
68         charList.minus(']').forEach {
69             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
70                 NetconfMessageState.FIRST_BIGGER.evaluateChar(it))
71         }
72     }
73
74     @Test
75     fun `THIRD_BRACKET transitions`() {
76         assertEquals(NetconfMessageState.ENDING_BIGGER,
77             NetconfMessageState.THIRD_BRACKET.evaluateChar(']'))
78
79         charList.minus(']').forEach {
80             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
81                 NetconfMessageState.THIRD_BRACKET.evaluateChar(it))
82         }
83     }
84
85     @Test
86     fun `ENDING_BIGGER transitions`() {
87         assertEquals(NetconfMessageState.END_PATTERN,
88             NetconfMessageState.ENDING_BIGGER.evaluateChar('>'))
89
90         charList.minus('>').forEach {
91             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
92                 NetconfMessageState.ENDING_BIGGER.evaluateChar(it))
93         }
94     }
95
96     @Test
97     fun `FIRST_LF transitions`() {
98         assertEquals(NetconfMessageState.FIRST_HASH,
99             NetconfMessageState.FIRST_LF.evaluateChar('#'))
100         assertEquals(NetconfMessageState.FIRST_BRACKET,
101             NetconfMessageState.FIRST_LF.evaluateChar(']'))
102         assertEquals(NetconfMessageState.FIRST_LF,
103             NetconfMessageState.FIRST_LF.evaluateChar('\n'))
104         charList.minus(listOf('#', ']', '\n')).forEach {
105             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
106                 NetconfMessageState.FIRST_LF.evaluateChar(it))
107         }
108     }
109
110     @Test
111     fun `FIRST_HASH transitions`() {
112         assertEquals(NetconfMessageState.SECOND_HASH,
113             NetconfMessageState.FIRST_HASH.evaluateChar('#'))
114         charList.minus('#').forEach {
115             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
116                 NetconfMessageState.FIRST_HASH.evaluateChar(it))
117         }
118     }
119
120     @Test
121     fun `SECOND_HASH transitions`() {
122         assertEquals(NetconfMessageState.END_CHUNKED_PATTERN,
123             NetconfMessageState.SECOND_HASH.evaluateChar('\n'))
124
125         charList.minus( '\n').forEach {
126             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
127                 NetconfMessageState.SECOND_HASH.evaluateChar(it))
128         }
129     }
130
131     @Test
132     fun `END_CHUNKED_PATTERN transitions`() {
133         charList.forEach {
134             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
135                 NetconfMessageState.END_CHUNKED_PATTERN.evaluateChar(it))
136         }
137     }
138
139     @Test
140     fun `END_PATTERN transitions`() {
141         charList.forEach {
142             assertEquals(NetconfMessageState.NO_MATCHING_PATTERN,
143                 NetconfMessageState.END_PATTERN.evaluateChar(it))
144         }
145     }
146
147 }