/////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2015 Microsoft Corporation. All rights reserved. // // This code is licensed under the MIT License (MIT). // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // /////////////////////////////////////////////////////////////////////////////// #include #include #include using namespace std; using namespace gsl;; namespace { void use(unsigned int&) {} } SUITE(bounds_test) { TEST(basic_bounds) { for (auto point : static_bounds { 2 }) { for (unsigned int j = 0; j < decltype(point)::rank; j++) { use(j); use(point[j]); } } } TEST(bounds_basic) { static_bounds b; auto a = b.slice(); static_bounds x{ 4 }; x.slice().slice(); } TEST (arrayview_iterator) { static_bounds bounds{ 3 }; auto itr = bounds.begin(); #ifdef CONFIRM_COMPILATION_ERRORS array_view< int, 4, dynamic_range, 2> av(nullptr, bounds); auto itr2 = av.cbegin(); for (auto & v : av) { v = 4; } fill(av.begin(), av.end(), 0); #endif } TEST (bounds_convertible) { static_bounds b1; static_bounds b2 = b1; #ifdef CONFIRM_COMPILATION_ERRORS static_bounds b4 = b2; #endif static_bounds b3 = b1; static_bounds b4 = b3; static_bounds b11; static_bounds b5; static_bounds b6; b5 = static_bounds(); CHECK_THROW(b6 = b5, fail_fast); b5 = static_bounds(); b6 = b5; CHECK(b5 == b6); CHECK(b5.size() == b6.size()); } } int main(int, const char *[]) { return UnitTest::RunAllTests(); }