aboutsummaryrefslogtreecommitdiffstats
path: root/tests/span_tests.cpp
diff options
context:
space:
mode:
authorNeil MacIntosh <neilmac@fb.com>2018-03-03 19:12:45 -0800
committerGitHub <noreply@github.com>2018-03-03 19:12:45 -0800
commit6a33b97a84f9c0a60ede78b5db98647e9a48d6c9 (patch)
tree843904bdf2e4a60554a30960df4557a8ef815746 /tests/span_tests.cpp
parentcbd64c9ff6c45cdbf0312a1829d1f76f713403dd (diff)
downloadplatform_external_Microsoft-GSL-6a33b97a84f9c0a60ede78b5db98647e9a48d6c9.tar.gz
platform_external_Microsoft-GSL-6a33b97a84f9c0a60ede78b5db98647e9a48d6c9.tar.bz2
platform_external_Microsoft-GSL-6a33b97a84f9c0a60ede78b5db98647e9a48d6c9.zip
Fix return type of templated span.subspan() (#625)
* Added support for returning fixed-spize spans from subspan(). * Addressed issues from code review. * Took simpler approach to static data member. * Subtle fix to support MSVC 15. * Helps to not introduce extraneous >
Diffstat (limited to 'tests/span_tests.cpp')
-rw-r--r--tests/span_tests.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp
index a71a228..20279ec 100644
--- a/tests/span_tests.cpp
+++ b/tests/span_tests.cpp
@@ -776,6 +776,7 @@ TEST_CASE("subspan")
{
span<int, 5> av = arr;
CHECK((av.subspan<2, 2>().size() == 2));
+ CHECK(decltype(av.subspan<2, 2>())::extent == 2);
CHECK(av.subspan(2, 2).size() == 2);
CHECK(av.subspan(2, 3).size() == 3);
}
@@ -783,13 +784,16 @@ TEST_CASE("subspan")
{
span<int, 5> av = arr;
CHECK((av.subspan<0, 0>().size() == 0));
+ CHECK(decltype(av.subspan<0,0>())::extent == 0);
CHECK(av.subspan(0, 0).size() == 0);
}
{
span<int, 5> av = arr;
CHECK((av.subspan<0, 5>().size() == 5));
+ CHECK(decltype(av.subspan<0, 5>())::extent == 5);
CHECK(av.subspan(0, 5).size() == 5);
+
CHECK_THROWS_AS(av.subspan(0, 6).size(), fail_fast);
CHECK_THROWS_AS(av.subspan(1, 5).size(), fail_fast);
}
@@ -797,14 +801,22 @@ TEST_CASE("subspan")
{
span<int, 5> av = arr;
CHECK((av.subspan<4, 0>().size() == 0));
+ CHECK(decltype(av.subspan<4, 0>())::extent == 0);
CHECK(av.subspan(4, 0).size() == 0);
CHECK(av.subspan(5, 0).size() == 0);
CHECK_THROWS_AS(av.subspan(6, 0).size(), fail_fast);
}
{
+ span<int, 5> av = arr;
+ CHECK((av.subspan<1>().size() == 4));
+ CHECK(decltype(av.subspan<1>())::extent == 4);
+ }
+
+ {
span<int> av;
CHECK((av.subspan<0, 0>().size() == 0));
+ CHECK((decltype(av.subspan<0, 0>())::extent == 0));
CHECK(av.subspan(0, 0).size() == 0);
CHECK_THROWS_AS((av.subspan<1, 0>().size()), fail_fast);
}