diff options
author | Neil MacIntosh <neilmac@microsoft.com> | 2016-06-24 04:54:09 -0700 |
---|---|---|
committer | Neil MacIntosh <neilmac@microsoft.com> | 2016-06-24 04:54:09 -0700 |
commit | b72d7abfb05aab6e3be88d414811473cb9394465 (patch) | |
tree | c26addefd42dca6086cc7926ae31f8a61ed35226 /tests | |
parent | 7b00172f0073305cd868cecc2d8ab0e716613b39 (diff) | |
download | platform_external_Microsoft-GSL-b72d7abfb05aab6e3be88d414811473cb9394465.tar.gz platform_external_Microsoft-GSL-b72d7abfb05aab6e3be88d414811473cb9394465.tar.bz2 platform_external_Microsoft-GSL-b72d7abfb05aab6e3be88d414811473cb9394465.zip |
Added definition of gsl::byte to match proposed std::byte.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/byte_tests.cpp | 92 |
2 files changed, 93 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9723309..009b52d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -54,3 +54,4 @@ add_gsl_test(notnull_tests) add_gsl_test(assertion_tests) add_gsl_test(utils_tests) add_gsl_test(owner_tests) +add_gsl_test(byte_tests)
\ No newline at end of file diff --git a/tests/byte_tests.cpp b/tests/byte_tests.cpp new file mode 100644 index 0000000..ff91e50 --- /dev/null +++ b/tests/byte_tests.cpp @@ -0,0 +1,92 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// 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 <UnitTest++/UnitTest++.h> +#include <byte.h> + +#include <iostream> +#include <list> +#include <map> +#include <memory> +#include <string> +#include <vector> + +using namespace std; +using namespace gsl; + +namespace +{ + +SUITE(byte_tests) +{ + TEST(construction) + { + { + byte b = static_cast<byte>(4); + CHECK(static_cast<unsigned char>(b) == 4); + } + + { + byte b = byte(12); + CHECK(static_cast<unsigned char>(b) == 12); + } + + // waiting for C++17 enum class direct initializer support + //{ + // byte b { 14 }; + // CHECK(static_cast<unsigned char>(b) == 14); + //} + } + + TEST(bitwise_operations) + { + byte b = byte(0xFF); + + byte a = byte(0x00); + CHECK((b | a) == byte(0xFF)); + CHECK(a == byte(0x00)); + + a |= b; + CHECK(a == byte(0xFF)); + + a = byte(0x01); + CHECK((b & a) == byte(0x01)); + + a &= b; + CHECK(a == byte(0x01)); + + CHECK((b ^ a) == byte(0xFE)); + + CHECK(a == byte(0x01)); + a ^= b; + CHECK(a == byte(0xFE)); + + a = byte(0x01); + CHECK(~a == byte(0xFE)); + + a = byte(0xFF); + CHECK((a << 4) == byte(0xF0)); + CHECK((a >> 4) == byte(0x0F)); + + a <<= 4; + CHECK(a == byte(0xF0)); + a >>= 4; + CHECK(a == byte(0x0F)); + } +} +} + +int main(int, const char* []) { return UnitTest::RunAllTests(); } |