Path: blob/main/lib/libc/tests/string/wcscasecmp_test.c
39485 views
/*-1* Copyright (c) 2009 David Schultz <[email protected]>2* All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7* 1. Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9* 2. Redistributions in binary form must reproduce the above copyright10* notice, this list of conditions and the following disclaimer in the11* documentation and/or other materials provided with the distribution.12*13* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND14* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE15* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE16* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE17* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL18* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS19* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)20* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT21* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY22* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF23* SUCH DAMAGE.24*/2526#include <assert.h>27#include <locale.h>28#include <stdio.h>29#include <stdlib.h>30#include <wchar.h>31#include <wctype.h>3233#include <atf-c.h>3435ATF_TC_WITHOUT_HEAD(nul);36ATF_TC_BODY(nul, tc)37{3839ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);4041ATF_CHECK(wcscasecmp(L"", L"") == 0);42ATF_CHECK(wcsncasecmp(L"", L"", 50) == 0);43ATF_CHECK(wcsncasecmp(L"", L"", 0) == 0);44}4546ATF_TC_WITHOUT_HEAD(wcscasecmp_equal);47ATF_TC_BODY(wcscasecmp_equal, tc)48{4950ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);5152ATF_CHECK(wcscasecmp(L"abc", L"abc") == 0);53ATF_CHECK(wcscasecmp(L"ABC", L"ABC") == 0);54ATF_CHECK(wcscasecmp(L"abc", L"ABC") == 0);55ATF_CHECK(wcscasecmp(L"ABC", L"abc") == 0);56}5758ATF_TC_WITHOUT_HEAD(wcscasecmp_same_len_buffers);59ATF_TC_BODY(wcscasecmp_same_len_buffers, tc)60{6162ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);6364ATF_CHECK(wcscasecmp(L"abc", L"xyz") < 0);65ATF_CHECK(wcscasecmp(L"ABC", L"xyz") < 0);66ATF_CHECK(wcscasecmp(L"abc", L"XYZ") < 0);67ATF_CHECK(wcscasecmp(L"ABC", L"XYZ") < 0);68ATF_CHECK(wcscasecmp(L"xyz", L"abc") > 0);69ATF_CHECK(wcscasecmp(L"XYZ", L"abc") > 0);70ATF_CHECK(wcscasecmp(L"xyz", L"ABC") > 0);71ATF_CHECK(wcscasecmp(L"XYZ", L"ABC") > 0);72}7374ATF_TC_WITHOUT_HEAD(wcscasecmp_mismatched_len_buffers);75ATF_TC_BODY(wcscasecmp_mismatched_len_buffers, tc)76{7778ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);7980ATF_CHECK(wcscasecmp(L"abc", L"ABCD") < 0);81ATF_CHECK(wcscasecmp(L"ABC", L"abcd") < 0);82ATF_CHECK(wcscasecmp(L"abcd", L"ABC") > 0);83ATF_CHECK(wcscasecmp(L"ABCD", L"abc") > 0);84}8586ATF_TC_WITHOUT_HEAD(wcsncasecmp);87ATF_TC_BODY(wcsncasecmp, tc)88{8990ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);9192ATF_CHECK(wcsncasecmp(L"abc", L"ABCD", 4) < 0);93ATF_CHECK(wcsncasecmp(L"ABC", L"abcd", 4) < 0);94ATF_CHECK(wcsncasecmp(L"abcd", L"ABC", 4) > 0);95ATF_CHECK(wcsncasecmp(L"ABCD", L"abc", 4) > 0);96ATF_CHECK(wcsncasecmp(L"abc", L"ABCD", 3) == 0);97ATF_CHECK(wcsncasecmp(L"ABC", L"abcd", 3) == 0);98}99100ATF_TC_WITHOUT_HEAD(wcscasecmp_greek);101ATF_TC_BODY(wcscasecmp_greek, tc)102{103104ATF_REQUIRE(setlocale(LC_CTYPE, "C") != NULL);105106ATF_CHECK(wcscasecmp(L"λ", L"Λ") != 0);107ATF_REQUIRE(setlocale(LC_CTYPE, "el_GR.UTF-8") != NULL);108ATF_CHECK(wcscasecmp(L"λ", L"Λ") == 0);109ATF_CHECK(wcscasecmp(L"λ", L"Ω") < 0);110ATF_CHECK(wcscasecmp(L"Ω", L"λ") > 0);111}112113ATF_TP_ADD_TCS(tp)114{115116ATF_TP_ADD_TC(tp, nul);117ATF_TP_ADD_TC(tp, wcscasecmp_equal);118ATF_TP_ADD_TC(tp, wcscasecmp_same_len_buffers);119ATF_TP_ADD_TC(tp, wcscasecmp_mismatched_len_buffers);120ATF_TP_ADD_TC(tp, wcsncasecmp);121ATF_TP_ADD_TC(tp, wcscasecmp_greek);122123return (atf_no_error());124}125126127