X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/eb6b6ca394357805f2bdba989abae309f718b4d8..f427ee49d309d8fc33ebf3042c3a775f2f530ded:/tests/bounded_array_src/operator.subscript.cpp diff --git a/tests/bounded_array_src/operator.subscript.cpp b/tests/bounded_array_src/operator.subscript.cpp new file mode 100644 index 000000000..cb61048e8 --- /dev/null +++ b/tests/bounded_array_src/operator.subscript.cpp @@ -0,0 +1,56 @@ +// +// Tests for +// T& operator[](ptrdiff_t n); +// T const& operator[](ptrdiff_t n) const; +// + +#include +#include "test_policy.h" +#include +#include + +struct T { int i; }; +inline bool +operator==(T const& a, T const& b) +{ + return a.i == b.i; +} + +template +static void +tests() +{ + { + test_bounded_array array = {T{0}, T{1}, T{2}, T{3}, T{4}}; + T& a0 = array[0]; + CHECK(&a0 == array.data()); + CHECK(a0 == T{0}); + T& a1 = array[1]; + CHECK(a1 == T{1}); + T& a2 = array[2]; + CHECK(a2 == T{2}); + T& a3 = array[3]; + CHECK(a3 == T{3}); + T& a4 = array[4]; + CHECK(a4 == T{4}); + } + + { + test_bounded_array const array = {T{0}, T{1}, T{2}, T{3}, T{4}}; + T const& a0 = array[0]; + CHECK(&a0 == array.data()); + CHECK(a0 == T{0}); + T const& a1 = array[1]; + CHECK(a1 == T{1}); + T const& a2 = array[2]; + CHECK(a2 == T{2}); + T const& a3 = array[3]; + CHECK(a3 == T{3}); + T const& a4 = array[4]; + CHECK(a4 == T{4}); + } +} + +T_DECL(operator_subscript, "bounded_array.operator.subscript") { + tests(); +}