aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorNeil MacIntosh <neilmac@microsoft.com>2016-06-24 04:54:09 -0700
committerNeil MacIntosh <neilmac@microsoft.com>2016-06-24 04:54:09 -0700
commitb72d7abfb05aab6e3be88d414811473cb9394465 (patch)
treec26addefd42dca6086cc7926ae31f8a61ed35226 /tests
parent7b00172f0073305cd868cecc2d8ab0e716613b39 (diff)
downloadplatform_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.txt1
-rw-r--r--tests/byte_tests.cpp92
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(); }