Skip to content

gtest: Add mesa-gtest-extras.h with array ASSERT/EXPECT macros

Caio Oliveira requested to merge cmarcelo/mesa:gtest-bytes-equal-macros into main

There are no similar macros in gtest. They do recommend pulling another library (gmock) and use that, but having our own let us control the output more precisely. Extracted the code from a similar existing macro in blob_test.cpp, making changes to the output.

A check like

ASSERT_U8_ARRAY_EQUAL(expected_u8, result_u8, 32);

that fails will output

Expected 32 values to be equal but found 1 that differ:

expected_u8 values are:

  [000]  29  44  00  00  44  60  cb  80  93  65  07  c0  08  00  40  29
  [016]  03  81  00  00  5c  a0  21  87 *b0  31  00  00  00  00  00  60

result_u8 values are:

  [000]  29  44  00  00  44  60  cb  80  93  65  07  c0  08  00  40  29
  [016]  03  81  00  00  5c  a0  21  87 *af  31  00  00  00  00  00  60

and a check like

ASSERT_U64_ARRAY_EQUAL(expected_u64, result_u64, 4);

Expected 4 values to be equal but found 1 that differ:

expected_u64 values are:

  [000]  80cb604400004429  29400008c0076593
  [002]  8721a05c00008103 *60000000000031b0

result_u64 values are:

  [000]  80cb604400004429  29400008c0076593
  [002]  8721a05c00008103 *60000000000031af

Note the asterisk indicating wrong values.

The new header for extra macros is in src/gtest/include/ so it doesn't get in the way when updating the real gtest headers that are in src/gtest/include/gtest/.

Edited by Caio Oliveira

Merge request reports