@@ -317,6 +317,37 @@ vnl_vector_test_int()
317
317
v = v_temp, v.roll_inplace (-5 ); // Positive, in range
318
318
TEST (" v.roll_inplace(-5)" , (1 == v[0 ] && 2 == v[1 ] && 3 == v[2 ] && 0 == v[3 ]), true );
319
319
}
320
+
321
+ { // test operator-() on unsigned values
322
+ unsigned int vvalues[] = {1 , 2 , 3 , 4 };
323
+ int out_values[] = {-1 , -2 , -3 , -4 };
324
+
325
+ vnl_vector<unsigned int > unsigned_v (4 , 4 , vvalues);
326
+ const vnl_vector<int > minus_v1 = -unsigned_v;
327
+ const vnl_vector<int > minus_v2 = unsigned_v.operator -();
328
+ TEST (" unsigned_v.operator-()" ,
329
+ (out_values[0 ] == minus_v1[0 ] && out_values[1 ] == minus_v1[1 ] && out_values[2 ] == minus_v1[2 ] &&
330
+ out_values[3 ] == minus_v1[3 ]), true );
331
+ TEST (" unsigned_v.operator-()" ,
332
+ (out_values[0 ] == minus_v2[0 ] && out_values[1 ] == minus_v2[1 ] && out_values[2 ] == minus_v2[2 ] &&
333
+ out_values[3 ] == minus_v2[3 ]), true );
334
+ }
335
+
336
+ { // test operator-() on unsigned values
337
+ unsigned int vvalues[] = {1 , 2 , 3 , 4 };
338
+ int out_values[] = {-1 , -2 , -3 , -4 };
339
+
340
+ vnl_vector_fixed<unsigned int ,4 > unsigned_v (vvalues);
341
+ const vnl_vector_fixed<int ,4 > minus_v1 = -unsigned_v;
342
+ const vnl_vector_fixed<int ,4 > minus_v2 = unsigned_v.operator -();
343
+ TEST (" unsigned_v.operator-()" ,
344
+ (out_values[0 ] == minus_v1[0 ] && out_values[1 ] == minus_v1[1 ] && out_values[2 ] == minus_v1[2 ] &&
345
+ out_values[3 ] == minus_v1[3 ]), true );
346
+ TEST (" unsigned_v.operator-()" ,
347
+ (out_values[0 ] == minus_v2[0 ] && out_values[1 ] == minus_v2[1 ] && out_values[2 ] == minus_v2[2 ] &&
348
+ out_values[3 ] == minus_v2[3 ]), true );
349
+ }
350
+
320
351
}
321
352
322
353
bool
0 commit comments