X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/eb6b6ca394357805f2bdba989abae309f718b4d8..f427ee49d309d8fc33ebf3042c3a775f2f530ded:/tests/bounded_array_ref_src/ctor.bounded_array.cpp diff --git a/tests/bounded_array_ref_src/ctor.bounded_array.cpp b/tests/bounded_array_ref_src/ctor.bounded_array.cpp new file mode 100644 index 000000000..37eebec49 --- /dev/null +++ b/tests/bounded_array_ref_src/ctor.bounded_array.cpp @@ -0,0 +1,69 @@ +// +// Tests for +// template +// bounded_array_ref(bounded_array& data); +// + +#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}}; + test_bounded_array_ref view(array); + CHECK(view.data() == array.data()); + CHECK(view.size() == 5); + CHECK(view[0] == T{0}); + CHECK(view[1] == T{1}); + CHECK(view[2] == T{2}); + CHECK(view[3] == T{3}); + CHECK(view[4] == T{4}); + } + + { + test_bounded_array array = {T{11}}; + test_bounded_array_ref view(array); + CHECK(view.data() == array.data()); + CHECK(view.size() == 1); + CHECK(view[0] == T{11}); + } + + { + test_bounded_array array = {}; + test_bounded_array_ref view(array); + CHECK(view.data() == array.data()); + CHECK(view.size() == 0); + } + + // Also test implicit construction + { + test_bounded_array array = {T{11}}; + test_bounded_array_ref view = array; + CHECK(view.data() == array.data()); + CHECK(view.size() == 1); + } + { + test_bounded_array array = {T{11}}; + auto check = [&array](test_bounded_array_ref view) { + CHECK(view.data() == array.data()); + CHECK(view.size() == 1); + }; + check(array); + } +} + +T_DECL(ctor_bounded_array, "bounded_array_ref.ctor.bounded_array") { + tests(); +}