From 81b1ba316288153c6cd030821e2e43a1c77c226c Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 26 Dec 2019 09:49:39 +0100 Subject: [PATCH] fixed_string_test added --- test/unit_test/static/CMakeLists.txt | 2 +- test/unit_test/static/fixed_string_test.cpp | 53 +++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 test/unit_test/static/fixed_string_test.cpp diff --git a/test/unit_test/static/CMakeLists.txt b/test/unit_test/static/CMakeLists.txt index 167aa19f..79e746b7 100644 --- a/test/unit_test/static/CMakeLists.txt +++ b/test/unit_test/static/CMakeLists.txt @@ -26,7 +26,7 @@ add_library(unit_tests_static data_test.cpp dimension_op_test.cpp dimensions_concepts_test.cpp -# fixed_string_test.cpp + fixed_string_test.cpp math_test.cpp quantity_test.cpp ratio_test.cpp diff --git a/test/unit_test/static/fixed_string_test.cpp b/test/unit_test/static/fixed_string_test.cpp new file mode 100644 index 00000000..ce2c8abc --- /dev/null +++ b/test/unit_test/static/fixed_string_test.cpp @@ -0,0 +1,53 @@ +// The MIT License (MIT) +// +// Copyright (c) 2018 Mateusz Pusz +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// 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 "units/bits/external/fixed_string.h" + +using namespace units; + +namespace { + +constexpr basic_fixed_string txt1('a'); +static_assert(txt1.size() == 1); +static_assert(txt1[0] == 'a'); +static_assert(txt1 == basic_fixed_string("a")); +static_assert(txt1 < basic_fixed_string("b")); +static_assert(txt1 < basic_fixed_string("aa")); +static_assert(txt1 + basic_fixed_string('b') == basic_fixed_string("ab")); +static_assert(basic_fixed_string('b') + txt1 == basic_fixed_string("ba")); +static_assert(txt1 + basic_fixed_string("bc") == basic_fixed_string("abc")); +static_assert(basic_fixed_string("bc") + txt1 == basic_fixed_string("bca")); + +constexpr basic_fixed_string txt2("abc"); +static_assert(txt2.size() == 3); +static_assert(txt2[0] == 'a'); +static_assert(txt2[1] == 'b'); +static_assert(txt2[2] == 'c'); +static_assert(txt2 == basic_fixed_string("abc")); +static_assert(txt2 < basic_fixed_string("b")); +static_assert(txt2 > basic_fixed_string("aa")); +static_assert(txt2 + basic_fixed_string('d') == basic_fixed_string("abcd")); +static_assert(basic_fixed_string('d') + txt2 == basic_fixed_string("dabc")); +static_assert(txt2 + basic_fixed_string("def") == basic_fixed_string("abcdef")); +static_assert(basic_fixed_string("def") + txt2 == basic_fixed_string("defabc")); + +}