@@ -78,4 +78,113 @@ public void VectorSetInfo_SkipsNonScalarValues()
7878 Assert . Equal ( VectorSetQuantization . Unknown , result . Value . Quantization ) ;
7979 Assert . Equal ( 0 , result . Value . Dimension ) ;
8080 }
81+
82+ [ Fact ]
83+ public void VectorSetLinks_EmptyArray ( )
84+ {
85+ // VLINKS returns empty array
86+ var resp = "*0\r \n " ;
87+ var processor = ResultProcessor . VectorSetLinks ;
88+ using var result = Execute ( resp , processor ) ;
89+
90+ Assert . NotNull ( result ) ;
91+ Assert . Equal ( 0 , result . Length ) ;
92+ }
93+
94+ [ Theory ]
95+ [ InlineData ( "*-1\r \n " ) ] // null array (RESP2)
96+ [ InlineData ( "_\r \n " ) ] // null (RESP3)
97+ public void VectorSetLinks_NullArray ( string resp )
98+ {
99+ var processor = ResultProcessor . VectorSetLinks ;
100+ using var result = Execute ( resp , processor ) ;
101+
102+ Assert . NotNull ( result ) ;
103+ Assert . Equal ( 0 , result . Length ) ;
104+ }
105+
106+ [ Fact ]
107+ public void VectorSetLinks_SingleNestedArray ( )
108+ {
109+ // VLINKS returns [[element1]]
110+ var resp = "*1\r \n *1\r \n $8\r \n element1\r \n " ;
111+ var processor = ResultProcessor . VectorSetLinks ;
112+ using var result = Execute ( resp , processor ) ;
113+
114+ Assert . NotNull ( result ) ;
115+ Assert . Equal ( 1 , result . Length ) ;
116+ Assert . Equal ( "element1" , result . Span [ 0 ] . ToString ( ) ) ;
117+ }
118+
119+ [ Fact ]
120+ public void VectorSetLinks_MultipleNestedArrays ( )
121+ {
122+ // VLINKS returns [[element1], [element2, element3], [element4]]
123+ var resp = "*3\r \n *1\r \n $8\r \n element1\r \n *2\r \n $8\r \n element2\r \n $8\r \n element3\r \n *1\r \n $8\r \n element4\r \n " ;
124+ var processor = ResultProcessor . VectorSetLinks ;
125+ using var result = Execute ( resp , processor ) ;
126+
127+ Assert . NotNull ( result ) ;
128+ Assert . Equal ( 4 , result . Length ) ;
129+ Assert . Equal ( "element1" , result . Span [ 0 ] . ToString ( ) ) ;
130+ Assert . Equal ( "element2" , result . Span [ 1 ] . ToString ( ) ) ;
131+ Assert . Equal ( "element3" , result . Span [ 2 ] . ToString ( ) ) ;
132+ Assert . Equal ( "element4" , result . Span [ 3 ] . ToString ( ) ) ;
133+ }
134+
135+ [ Fact ]
136+ public void VectorSetLinksWithScores_EmptyArray ( )
137+ {
138+ // VLINKS WITHSCORES returns empty array
139+ var resp = "*0\r \n " ;
140+ var processor = ResultProcessor . VectorSetLinksWithScores ;
141+ using var result = Execute ( resp , processor ) ;
142+
143+ Assert . NotNull ( result ) ;
144+ Assert . Equal ( 0 , result . Length ) ;
145+ }
146+
147+ [ Theory ]
148+ [ InlineData ( "*-1\r \n " ) ] // null array (RESP2)
149+ [ InlineData ( "_\r \n " ) ] // null (RESP3)
150+ public void VectorSetLinksWithScores_NullArray ( string resp )
151+ {
152+ var processor = ResultProcessor . VectorSetLinksWithScores ;
153+ using var result = Execute ( resp , processor ) ;
154+
155+ Assert . NotNull ( result ) ;
156+ Assert . Equal ( 0 , result . Length ) ;
157+ }
158+
159+ [ Fact ]
160+ public void VectorSetLinksWithScores_SingleNestedArray ( )
161+ {
162+ // VLINKS WITHSCORES returns [[element1, score1]]
163+ var resp = "*1\r \n *2\r \n $8\r \n element1\r \n $3\r \n 1.5\r \n " ;
164+ var processor = ResultProcessor . VectorSetLinksWithScores ;
165+ using var result = Execute ( resp , processor ) ;
166+
167+ Assert . NotNull ( result ) ;
168+ Assert . Equal ( 1 , result . Length ) ;
169+ Assert . Equal ( "element1" , result . Span [ 0 ] . Member . ToString ( ) ) ;
170+ Assert . Equal ( 1.5 , result . Span [ 0 ] . Score ) ;
171+ }
172+
173+ [ Fact ]
174+ public void VectorSetLinksWithScores_MultipleNestedArrays ( )
175+ {
176+ // VLINKS WITHSCORES returns [[element1, score1], [element2, score2], [element3, score3]]
177+ var resp = "*3\r \n *2\r \n $8\r \n element1\r \n $3\r \n 1.5\r \n *2\r \n $8\r \n element2\r \n $3\r \n 2.5\r \n *2\r \n $8\r \n element3\r \n $3\r \n 3.5\r \n " ;
178+ var processor = ResultProcessor . VectorSetLinksWithScores ;
179+ using var result = Execute ( resp , processor ) ;
180+
181+ Assert . NotNull ( result ) ;
182+ Assert . Equal ( 3 , result . Length ) ;
183+ Assert . Equal ( "element1" , result . Span [ 0 ] . Member . ToString ( ) ) ;
184+ Assert . Equal ( 1.5 , result . Span [ 0 ] . Score ) ;
185+ Assert . Equal ( "element2" , result . Span [ 1 ] . Member . ToString ( ) ) ;
186+ Assert . Equal ( 2.5 , result . Span [ 1 ] . Score ) ;
187+ Assert . Equal ( "element3" , result . Span [ 2 ] . Member . ToString ( ) ) ;
188+ Assert . Equal ( 3.5 , result . Span [ 2 ] . Score ) ;
189+ }
81190}
0 commit comments