Unіt Tests

- Merged width.t.cpp into utf8.t.cpp.
This commit is contained in:
Paul Beckingham 2015-03-07 11:59:37 -05:00
parent 9d1c4101c2
commit 70c3d9845c
4 changed files with 38 additions and 90 deletions

1
test/.gitignore vendored
View file

@ -53,7 +53,6 @@ variant_partial.t
variant_subtract.t variant_subtract.t
variant_xor.t variant_xor.t
view.t view.t
width.t
json_test json_test

View file

@ -8,8 +8,8 @@ include_directories (${CMAKE_SOURCE_DIR}
set (test_SRCS autocomplete.t color.t config.t date.t directory.t dom.t set (test_SRCS autocomplete.t color.t config.t date.t directory.t dom.t
file.t i18n.t json.t list.t msg.t nibbler.t path.t rx.t t.t t2.t file.t i18n.t json.t list.t msg.t nibbler.t path.t rx.t t.t t2.t
t3.t tdb2.t text.t utf8.t util.t view.t width.t json_test t3.t tdb2.t text.t utf8.t util.t view.t json_test lexer.t
iso8601d.t iso8601p.t duration.t lexer.t variant_add.t iso8601d.t iso8601p.t duration.t variant_add.t
variant_and.t variant_cast.t variant_divide.t variant_equal.t variant_and.t variant_cast.t variant_divide.t variant_equal.t
variant_exp.t variant_gt.t variant_gte.t variant_inequal.t variant_exp.t variant_gt.t variant_gte.t variant_inequal.t
variant_lt.t variant_lte.t variant_match.t variant_math.t variant_lt.t variant_lte.t variant_match.t variant_math.t

View file

@ -25,45 +25,39 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#include <cmake.h> #include <cmake.h>
#include <iostream>
#include <stdlib.h>
#include <utf8.h> #include <utf8.h>
#include <test.h> #include <test.h>
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv) int main (int argc, char** argv)
{ {
UnitTest t (17); UnitTest t (33);
// Ensure environment has no influence. std::string ascii_text = "This is a test";
unsetenv ("TASKDATA"); std::string utf8_text = "más sábado miércoles";
unsetenv ("TASKRC"); std::string utf8_wide_text = "改变各种颜色";
std::string ascii_text = "This is a test";
std::string utf8_text = "más sábado miércoles";
std::string utf8_wide_text = "改变各种颜色";
std::string ascii_text_color = "This is a test"; std::string ascii_text_color = "This is a test";
std::string utf8_text_color = "más sábado miércoles"; std::string utf8_text_color = "más sábado miércoles";
std::string utf8_wide_text_color = "变各种颜色"; std::string utf8_wide_text_color = "变各种颜色";
// unsigned int utf8_codepoint (const std::string&); // unsigned int utf8_codepoint (const std::string&);
t.is ((int) utf8_codepoint ("\\u0020"), 32, "\\u0020 --> ' '"); t.is ((int) utf8_codepoint ("\\u0020"), 32, "\\u0020 --> ' '");
t.is ((int) utf8_codepoint ("U+0020"), 32, "U+0020 --> ' '"); t.is ((int) utf8_codepoint ("U+0020"), 32, "U+0020 --> ' '");
// TODO unsigned int utf8_next_char (const std::string&, std::string::size_type&); // TODO unsigned int utf8_next_char (const std::string&, std::string::size_type&);
// TODO std::string utf8_character (unsigned int); // TODO std::string utf8_character (unsigned int);
// TODO int utf8_sequence (unsigned int); // TODO int utf8_sequence (unsigned int);
// unsigned int utf8_length (const std::string&); // unsigned int utf8_length (const std::string&);
t.is ((int) utf8_length (ascii_text), 14, "ASCII utf8_length"); t.is ((int) utf8_length (ascii_text), 14, "ASCII utf8_length");
t.is ((int) utf8_length (utf8_text), 20, "UTF8 utf8_length"); t.is ((int) utf8_length (utf8_text), 20, "UTF8 utf8_length");
t.is ((int) utf8_length (utf8_wide_text), 6, "UTF8 wide utf8_length"); t.is ((int) utf8_length (utf8_wide_text), 6, "UTF8 wide utf8_length");
// unsigned int utf8_width (const std::string&); // unsigned int utf8_width (const std::string&);
t.is ((int) utf8_width (ascii_text), 14, "ASCII utf8_width"); t.is ((int) utf8_width (ascii_text), 14, "ASCII utf8_width");
t.is ((int) utf8_width (utf8_text), 20, "UTF8 utf8_width"); t.is ((int) utf8_width (utf8_text), 20, "UTF8 utf8_width");
t.is ((int) utf8_width (utf8_wide_text), 12, "UTF8 wide utf8_width"); t.is ((int) utf8_width (utf8_wide_text), 12, "UTF8 wide utf8_width");
// unsigned int utf8_text_length (const std::string&); // unsigned int utf8_text_length (const std::string&);
t.is ((int) utf8_text_length (ascii_text_color), 14, "ASCII utf8_text_length"); t.is ((int) utf8_text_length (ascii_text_color), 14, "ASCII utf8_text_length");
@ -71,14 +65,32 @@ int main (int argc, char** argv)
t.is ((int) utf8_text_length (utf8_wide_text_color), 6, "UTF8 wide utf8_text_length"); t.is ((int) utf8_text_length (utf8_wide_text_color), 6, "UTF8 wide utf8_text_length");
// unsigned int utf8_text_width (const std::string&); // unsigned int utf8_text_width (const std::string&);
t.is ((int) utf8_text_width (ascii_text_color), 14, "ASCII utf8_text_width"); t.is ((int) utf8_text_width (ascii_text_color), 14, "ASCII utf8_text_width");
t.is ((int) utf8_text_width (utf8_text_color), 20, "UTF8 utf8_text_width"); t.is ((int) utf8_text_width (utf8_text_color), 20, "UTF8 utf8_text_width");
t.is ((int) utf8_text_width (utf8_wide_text_color), 12, "UTF8 wide utf8_text_width"); t.is ((int) utf8_text_width (utf8_wide_text_color), 12, "UTF8 wide utf8_text_width");
// const std::string utf8_substr (const std::string&, unsigned int, unsigned int length = 0); // const std::string utf8_substr (const std::string&, unsigned int, unsigned int length = 0);
t.is (utf8_substr (ascii_text, 0, 2), "Th", "ASCII utf8_substr"); t.is (utf8_substr (ascii_text, 0, 2), "Th", "ASCII utf8_substr");
t.is (utf8_substr (utf8_text, 0, 2), "", "UTF8 utf8_substr"); t.is (utf8_substr (utf8_text, 0, 2), "", "UTF8 utf8_substr");
t.is (utf8_substr (utf8_wide_text, 0, 2), "改变", "UTF8 wide utf8_substr"); t.is (utf8_substr (utf8_wide_text, 0, 2), "改变", "UTF8 wide utf8_substr");
// int mk_wcwidth (wchar_t);
t.is (mk_wcwidth ('a'), 1, "mk_wcwidth U+0061 --> 1");
t.is (mk_wcwidth (0x5149), 2, "mk_wcwidth U+5149 --> 2");
t.is (mk_wcwidth (0x9a8c), 2, "mk_wcwidth U+9a8c --> 2");
t.is (mk_wcwidth (0x4e70), 2, "mk_wcwidth U+4e70 --> 2");
t.is (mk_wcwidth (0x94b1), 2, "mk_wcwidth U+94b1 --> 2");
t.is (mk_wcwidth (0x5305), 2, "mk_wcwidth U+5305 --> 2");
t.is (mk_wcwidth (0x91cd), 2, "mk_wcwidth U+91cd --> 2");
t.is (mk_wcwidth (0x65b0), 2, "mk_wcwidth U+65b0 --> 2");
t.is (mk_wcwidth (0x8bbe), 2, "mk_wcwidth U+8bbe --> 2");
t.is (mk_wcwidth (0x8ba1), 2, "mk_wcwidth U+8ba1 --> 2");
t.is (mk_wcwidth (0x5411), 2, "mk_wcwidth U+5411 --> 2");
t.is (mk_wcwidth (0x4e0a), 2, "mk_wcwidth U+4e0a --> 2");
t.is (mk_wcwidth (0x4e0b), 2, "mk_wcwidth U+4e0b --> 2");
t.is (mk_wcwidth (0x7bad), 2, "mk_wcwidth U+7bad --> 2");
t.is (mk_wcwidth (0x5934), 2, "mk_wcwidth U+5934 --> 2");
t.is (mk_wcwidth (0xff0c), 2, "mk_wcwidth U+ff0c --> 2"); // comma
return 0; return 0;
} }

View file

@ -1,63 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2015, Paul Beckingham, Federico Hernandez.
//
// 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.
//
// http://www.opensource.org/licenses/mit-license.php
//
////////////////////////////////////////////////////////////////////////////////
#include <cmake.h>
#include <iostream>
#include <stdlib.h>
#include <text.h>
#include <test.h>
////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv)
{
UnitTest t (16);
// Ensure environment has no influence.
unsetenv ("TASKDATA");
unsetenv ("TASKRC");
t.is (mk_wcwidth ('a'), 1, "U+0061 --> 1");
t.is (mk_wcwidth (0x5149), 2, "U+5149 --> 2");
t.is (mk_wcwidth (0x9a8c), 2, "U+9a8c --> 2");
t.is (mk_wcwidth (0x4e70), 2, "U+4e70 --> 2");
t.is (mk_wcwidth (0x94b1), 2, "U+94b1 --> 2");
t.is (mk_wcwidth (0x5305), 2, "U+5305 --> 2");
t.is (mk_wcwidth (0x91cd), 2, "U+91cd --> 2");
t.is (mk_wcwidth (0x65b0), 2, "U+65b0 --> 2");
t.is (mk_wcwidth (0x8bbe), 2, "U+8bbe --> 2");
t.is (mk_wcwidth (0x8ba1), 2, "U+8ba1 --> 2");
t.is (mk_wcwidth (0x5411), 2, "U+5411 --> 2");
t.is (mk_wcwidth (0x4e0a), 2, "U+4e0a --> 2");
t.is (mk_wcwidth (0x4e0b), 2, "U+4e0b --> 2");
t.is (mk_wcwidth (0x7bad), 2, "U+7bad --> 2");
t.is (mk_wcwidth (0x5934), 2, "U+5934 --> 2");
t.is (mk_wcwidth (0xff0c), 2, "U+ff0c --> 2"); // comma
return 0;
}
////////////////////////////////////////////////////////////////////////////////