|
10 | 10 | import static org.junit.Assert.assertTrue; |
11 | 11 | import static org.mockito.Mockito.verify; |
12 | 12 |
|
13 | | -import java.util.ArrayList; |
14 | | -import java.util.Arrays; |
15 | 13 | import java.util.HashMap; |
16 | 14 | import java.util.Map; |
17 | 15 |
|
@@ -83,105 +81,142 @@ public void testValidate() { |
83 | 81 |
|
84 | 82 | @Test |
85 | 83 | public void testRun_NoNotes() { |
86 | | - Map<String, Object> parameters = new HashMap<>(); |
87 | | - tool.run((Map) parameters, listener); |
| 84 | + Map<String, String> parameters = new HashMap<>(); |
| 85 | + tool.run(parameters, listener); |
88 | 86 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
89 | 87 | verify(listener).onResponse(captor.capture()); |
90 | 88 | assertEquals("Scratchpad is empty.", captor.getValue()); |
91 | | - assertEquals(new ArrayList<>(), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 89 | + assertEquals("[]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
92 | 90 | } |
93 | 91 |
|
94 | 92 | @Test |
95 | 93 | public void testRun_WithScratchpadNotes() { |
96 | | - Map<String, Object> parameters = new HashMap<>(); |
97 | | - parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, new ArrayList<>(Arrays.asList("existing note"))); |
98 | | - tool.run((Map) parameters, listener); |
| 94 | + Map<String, String> parameters = new HashMap<>(); |
| 95 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"existing note\"]"); |
| 96 | + tool.run(parameters, listener); |
99 | 97 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
100 | 98 | verify(listener).onResponse(captor.capture()); |
101 | 99 | assertEquals("Notes from scratchpad:\n- existing note", captor.getValue()); |
102 | | - assertEquals(Arrays.asList("existing note"), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 100 | + assertEquals("[\"existing note\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
103 | 101 | } |
104 | 102 |
|
105 | 103 | @Test |
106 | 104 | public void testRun_WithPersistentNotes() { |
107 | | - Map<String, Object> parameters = new HashMap<>(); |
108 | | - parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, new ArrayList<>()); // Initialize with empty list |
| 105 | + Map<String, String> parameters = new HashMap<>(); |
| 106 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[]"); |
109 | 107 | parameters.put(ReadFromScratchPadTool.PERSISTENT_NOTES_KEY, "persistent note"); |
110 | | - tool.run((Map) parameters, listener); |
| 108 | + tool.run(parameters, listener); |
111 | 109 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
112 | 110 | verify(listener).onResponse(captor.capture()); |
113 | 111 | assertEquals("Notes from scratchpad:\n- persistent note", captor.getValue()); |
114 | | - assertEquals(Arrays.asList("persistent note"), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 112 | + assertEquals("[\"persistent note\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
115 | 113 | } |
116 | 114 |
|
117 | 115 | @Test |
118 | 116 | public void testRun_WithBothNotes() { |
119 | | - Map<String, Object> parameters = new HashMap<>(); |
120 | | - parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, new ArrayList<>(Arrays.asList("existing note"))); |
| 117 | + Map<String, String> parameters = new HashMap<>(); |
| 118 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"existing note\"]"); |
121 | 119 | parameters.put(ReadFromScratchPadTool.PERSISTENT_NOTES_KEY, "persistent note"); |
122 | | - tool.run((Map) parameters, listener); |
| 120 | + tool.run(parameters, listener); |
123 | 121 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
124 | 122 | verify(listener).onResponse(captor.capture()); |
125 | 123 | assertEquals("Notes from scratchpad:\n- existing note\n- persistent note", captor.getValue()); |
126 | | - assertEquals(Arrays.asList("existing note", "persistent note"), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 124 | + assertEquals("[\"existing note\",\"persistent note\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
127 | 125 | } |
128 | 126 |
|
129 | 127 | @Test |
130 | 128 | public void testRun_WithDuplicatePersistentNotes() { |
131 | | - Map<String, Object> parameters = new HashMap<>(); |
132 | | - parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, new ArrayList<>(Arrays.asList("existing note", "persistent note"))); |
| 129 | + Map<String, String> parameters = new HashMap<>(); |
| 130 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"existing note\",\"persistent note\"]"); |
133 | 131 | parameters.put(ReadFromScratchPadTool.PERSISTENT_NOTES_KEY, "persistent note"); |
134 | | - tool.run((Map) parameters, listener); |
| 132 | + tool.run(parameters, listener); |
135 | 133 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
136 | 134 | verify(listener).onResponse(captor.capture()); |
137 | 135 | assertEquals("Notes from scratchpad:\n- existing note\n- persistent note", captor.getValue()); |
138 | | - assertEquals(Arrays.asList("existing note", "persistent note"), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 136 | + assertEquals("[\"existing note\",\"persistent note\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
139 | 137 | } |
140 | 138 |
|
141 | 139 | @Test |
142 | 140 | public void testRun_WithNonListScratchpadNotes() { |
143 | | - Map<String, Object> parameters = new HashMap<>(); |
| 141 | + Map<String, String> parameters = new HashMap<>(); |
144 | 142 | parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "not a list"); |
145 | | - tool.run((Map) parameters, listener); |
| 143 | + tool.run(parameters, listener); |
146 | 144 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
147 | 145 | verify(listener).onResponse(captor.capture()); |
148 | 146 | assertEquals("Scratchpad is empty.", captor.getValue()); |
149 | | - assertEquals(new ArrayList<>(), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 147 | + assertEquals("[]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
150 | 148 | } |
151 | 149 |
|
152 | 150 | @Test |
153 | 151 | public void testRun_WithJsonStringNotes() { |
154 | | - Map<String, Object> parameters = new HashMap<>(); |
| 152 | + Map<String, String> parameters = new HashMap<>(); |
155 | 153 | parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"json note\"]"); |
156 | | - tool.run((Map) parameters, listener); |
| 154 | + tool.run(parameters, listener); |
157 | 155 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
158 | 156 | verify(listener).onResponse(captor.capture()); |
159 | 157 | assertEquals("Notes from scratchpad:\n- json note", captor.getValue()); |
160 | | - assertEquals(Arrays.asList("json note"), parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 158 | + assertEquals("[\"json note\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
161 | 159 | } |
162 | 160 |
|
163 | 161 | @Test |
164 | 162 | public void testRun_WithEmptyPersistentNotes() { |
165 | | - Map<String, Object> parameters = new HashMap<>(); |
166 | | - parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, new ArrayList<>(Arrays.asList("existing note"))); |
| 163 | + Map<String, String> parameters = new HashMap<>(); |
| 164 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"existing note\"]"); |
167 | 165 | parameters.put(ReadFromScratchPadTool.PERSISTENT_NOTES_KEY, ""); |
168 | | - tool.run((Map) parameters, listener); |
| 166 | + tool.run(parameters, listener); |
169 | 167 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
170 | 168 | verify(listener).onResponse(captor.capture()); |
171 | 169 | assertEquals("Notes from scratchpad:\n- existing note", captor.getValue()); |
172 | 170 | } |
173 | 171 |
|
174 | 172 | @Test |
175 | 173 | public void testRun_WithNullPersistentNotes() { |
176 | | - Map<String, Object> parameters = new HashMap<>(); |
177 | | - parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, new ArrayList<>(Arrays.asList("existing note"))); |
| 174 | + Map<String, String> parameters = new HashMap<>(); |
| 175 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"existing note\"]"); |
178 | 176 | parameters.put(ReadFromScratchPadTool.PERSISTENT_NOTES_KEY, null); |
179 | | - tool.run((Map) parameters, listener); |
| 177 | + tool.run(parameters, listener); |
180 | 178 | ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
181 | 179 | verify(listener).onResponse(captor.capture()); |
182 | 180 | assertEquals("Notes from scratchpad:\n- existing note", captor.getValue()); |
183 | 181 | } |
184 | 182 |
|
| 183 | + @Test |
| 184 | + public void testRun_StringConversion_EmptyArray() { |
| 185 | + Map<String, String> parameters = new HashMap<>(); |
| 186 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[]"); |
| 187 | + tool.run(parameters, listener); |
| 188 | + |
| 189 | + ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
| 190 | + verify(listener).onResponse(captor.capture()); |
| 191 | + assertEquals("Scratchpad is empty.", captor.getValue()); |
| 192 | + assertEquals("[]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 193 | + } |
| 194 | + |
| 195 | + @Test |
| 196 | + public void testRun_StringConversion_WithJsonArray() { |
| 197 | + Map<String, String> parameters = new HashMap<>(); |
| 198 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"note1\",\"note2\"]"); |
| 199 | + tool.run(parameters, listener); |
| 200 | + |
| 201 | + ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
| 202 | + verify(listener).onResponse(captor.capture()); |
| 203 | + assertEquals("Notes from scratchpad:\n- note1\n- note2", captor.getValue()); |
| 204 | + assertEquals("[\"note1\",\"note2\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 205 | + } |
| 206 | + |
| 207 | + @Test |
| 208 | + public void testRun_StringConversion_AddPersistentNote() { |
| 209 | + Map<String, String> parameters = new HashMap<>(); |
| 210 | + parameters.put(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY, "[\"existing\"]"); |
| 211 | + parameters.put(ReadFromScratchPadTool.PERSISTENT_NOTES_KEY, "new note"); |
| 212 | + tool.run(parameters, listener); |
| 213 | + |
| 214 | + ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); |
| 215 | + verify(listener).onResponse(captor.capture()); |
| 216 | + assertEquals("Notes from scratchpad:\n- existing\n- new note", captor.getValue()); |
| 217 | + assertEquals("[\"existing\",\"new note\"]", parameters.get(ReadFromScratchPadTool.SCRATCHPAD_NOTES_KEY)); |
| 218 | + } |
| 219 | + |
185 | 220 | @Test |
186 | 221 | public void testFactory() { |
187 | 222 | ReadFromScratchPadTool.Factory factory = ReadFromScratchPadTool.Factory.getInstance(); |
|
0 commit comments