/************************************************************************
 *
 * 0.fnmatch.cpp - tests exercising the rw_fnmatch() helper function
 *
 * $Id$
 *
 ************************************************************************
 *
 * Licensed to the Apache Software  Foundation (ASF) under one or more
 * contributor  license agreements.  See  the NOTICE  file distributed
 * with  this  work  for  additional information  regarding  copyright
 * ownership.   The ASF  licenses this  file to  you under  the Apache
 * License, Version  2.0 (the  "License"); you may  not use  this file
 * except in  compliance with the License.   You may obtain  a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the  License is distributed on an  "AS IS" BASIS,
 * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
 * implied.   See  the License  for  the  specific language  governing
 * permissions and limitations under the License.
 *
 **************************************************************************/

#include <rw_fnmatch.h>   // for rw_fnmatch()
#include <stdio.h>        // for fprintf(), stderr


#ifdef _RWSTD_OS_LINUX
#  include <fnmatch.h>    // for fnmatch()
#  define FNMATCH(pat, str, arg) fnmatch (pat, str, arg)
#endif   // _RWSTD_OS_LINUX


// the number of failed tests
static int nerrors;

static void
test (int line, int exp, const char *pat, const char *str)
{
    const int result = rw_fnmatch (pat, str, 0);

#ifdef FNMATCH
    const int native = FNMATCH (pat, str, 0);
#else   // if !defined (FNMATCH)
    const int native = exp;
#endif   // FNMATCH

    if (result != native || (-1 < exp && result != exp)) {

        ++nerrors;

        fprintf (stderr,
                 "%d. rw_fnmatch(\"%s\", \"%s\", 0) ==> %d, "
                 "expected (native:own) %d:%d\n",
                 line, pat, str, result, native, exp);
    }
}


int main ()
{
#define TEST(exp, pat, str) test (__LINE__, exp, pat, str)

    TEST (0, "",  "");
    TEST (1, "",  "a");
    TEST (1, "a", "");

    TEST (0, "a", "a");
    TEST (1, "a", "b");

    TEST (0, "ab", "ab");
    TEST (1, "ab", "ac");

    TEST (0, "abc", "abc");
    TEST (1, "xbc", "abc");
    TEST (1, "ayc", "abc");
    TEST (1, "abz", "abc");

    // exercise escaped characters
    TEST (1, "\\a", "");
    TEST (0, "\\a", "a");
    TEST (1, "\\a", "\\a");
    TEST (1, "\\\\", "");
    TEST (0, "\\\\", "\\");
    TEST (1, "\\?", "\\a");
    TEST (0, "\\?", "?");
    TEST (1, "\\?", "\\?");
    TEST (0, "\\[", "[");
    TEST (1, "\\[", "\\[");
    TEST (0, "\\[a", "[a");
    TEST (0, "\\[a]", "[a]");
    TEST (0, "\\[a\\]", "[a]");
    TEST (0, "\\[\\a\\]", "[a]");

    // exercise the question mark pattern
    TEST (1, "?", "");
    TEST (0, "?", "a");
    TEST (1, "?", "ab");

    TEST (1, "\\?", "");
    TEST (1, "\\?", "a");
    TEST (0, "\\?", "?");

    TEST (0, "a?", "ad");
    TEST (0, "?b", "ab");
    TEST (1, "?b", "ac");
    TEST (0, "??", "ae");
    TEST (1, "??", "aef");

    TEST (0, "?bc", "abc");
    TEST (0, "a?c", "abc");
    TEST (0, "ab?", "abc");

    TEST (0, "??c", "abc");
    TEST (0, "a??", "abc");
    TEST (0, "?b?", "abc");

    TEST (1, "??c", "abz");
    TEST (1, "a??", "xbc");
    TEST (1, "?b?", "ayc");

    TEST (0, "???", "abc");
    TEST (1, "???", "ab");
    TEST (1, "???", "abcd");

    // exercise the asterisk pattern
    TEST (0, "*", "");
    TEST (0, "*", "a");
    TEST (0, "*", "ab");
    TEST (0, "*", "abc");

    TEST (1, "\\*", "");
    TEST (1, "\\*", "a");
    TEST (0, "\\*", "*");
    TEST (1, "\\*", "ab");
    TEST (1, "\\*", "abc");

    TEST (0, "**", "");
    TEST (0, "**", "a");
    TEST (0, "**", "ab");
    TEST (0, "**", "abc");

    TEST (1, "*\\*", "");
    TEST (1, "*\\*", "a");
    TEST (0, "*\\*", "a*");
    TEST (0, "*\\*", "ab*");

    TEST (1, "a*", "");
    TEST (0, "a*", "a");
    TEST (0, "a*", "ab");
    TEST (0, "a*", "abc");

    TEST (1, "a**", "");
    TEST (0, "a**", "a");
    TEST (0, "a**", "ab");
    TEST (0, "a**", "abc");

    TEST (1, "**c", "");
    TEST (1, "**c", "a");
    TEST (1, "**c", "ab");
    TEST (0, "**c", "abc");
    TEST (1, "**c", "abcd");

    TEST (1, "a*z", "");
    TEST (1, "a*z", "a");
    TEST (1, "a*z", "ab");
    TEST (1, "a*z", "abc");
    TEST (0, "a*z", "abcz");
    TEST (0, "a*z", "abcdz");
    TEST (0, "a*z", "abcdez");

    TEST (1, "ab*z", "");
    TEST (1, "ab*z", "a");
    TEST (1, "ab*z", "ab");
    TEST (1, "ab*z", "abc");
    TEST (0, "ab*z", "abcz");
    TEST (0, "ab*z", "abcdz");
    TEST (0, "ab*z", "abcdez");

    TEST (1, "a*yz", "");
    TEST (1, "a*yz", "a");
    TEST (1, "a*yz", "ab");
    TEST (1, "a*yz", "abc");
    TEST (1, "a*yz", "abcz");
    TEST (0, "a*yz", "abcyz");
    TEST (0, "a*yz", "abcdyz");

    TEST (1, "ab*yz", "");
    TEST (1, "ab*yz", "a");
    TEST (1, "ab*yz", "ab");
    TEST (1, "ab*yz", "abc");
    TEST (1, "ab*yz", "abcz");
    TEST (0, "ab*yz", "abcyz");
    TEST (0, "ab*yz", "abcdyz");
    TEST (0, "ab*yz", "abcdeyz");

    TEST (1, "ab*x*z", "");
    TEST (1, "ab*x*z", "a");
    TEST (1, "ab*x*z", "ab");
    TEST (1, "ab*x*z", "abc");
    TEST (1, "ab*x*z", "abcz");
    TEST (1, "ab*x*z", "abcyz");
    TEST (0, "ab*x*z", "abcxyz");
    TEST (0, "ab*x*z", "abcxxyz");
    TEST (0, "ab*x*z", "abcxyyz");

    TEST (1, "*b*x*z", "");
    TEST (1, "*b*x*z", "a");
    TEST (1, "*b*x*z", "ab");
    TEST (1, "*b*x*z", "abc");
    TEST (1, "*b*x*z", "abcz");
    TEST (1, "*b*x*z", "abcyz");
    TEST (0, "*b*x*z", "bcxyz");
    TEST (0, "*b*x*z", "abcxyz");
    TEST (0, "*b*x*z", "aabcxyz");
    TEST (0, "*b*x*z", "abcxxyz");
    TEST (0, "*b*x*z", "abcxyyz");

    TEST (1, "abc*klm*xyz", "");
    TEST (1, "abc*klm*xyz", "a");
    TEST (1, "abc*klm*xyz", "ak");
    TEST (1, "abc*klm*xyz", "akx");

    TEST (1, "abc*klm*xyz", "abkx");
    TEST (1, "abc*klm*xyz", "abklx");
    TEST (1, "abc*klm*xyz", "abklxy");
    TEST (1, "abc*klm*xyz", "abcklxy");
    TEST (1, "abc*klm*xyz", "abcklmxy");
    TEST (0, "abc*klm*xyz", "abcklmxyz");
    TEST (0, "abc*klm*xyz", "abcdklmxyz");
    TEST (0, "abc*klm*xyz", "abcdklmnxyz");

    // exercise simple bracket expressions
    TEST (1, "[a]", "");
    TEST (0, "[a]", "a");
    TEST (1, "[a]", "b");
    TEST (1, "[?]", "c");
    TEST (0, "[?]", "?");
    TEST (1, "[-]", "d");
    TEST (0, "[-]", "-");
    TEST (1, "[]]", "e");
    TEST (0, "[]]", "]");
    TEST (1, "[\\]]", "f");
    TEST (1, "[\\]]", "\\");
    TEST (0, "[\\]]", "]");

    TEST (1, "[\\!a]", "");
    TEST (0, "[\\!a]", "a");
    TEST (1, "[\\!a]", "b");
    TEST (0, "[\\!?]", "!");
    TEST (0, "[\\!?]", "?");
    TEST (0, "[\\!-]", "-");
    TEST (0, "[\\!!]", "!");
    TEST (0, "[\\\\!]", "\\");

    TEST (1, "[ab]", "");
    TEST (0, "[ab]", "a");
    TEST (0, "[ab]", "b");
    TEST (1, "[ab]", "c");

    TEST (1, "[a]b", "");
    TEST (1, "[a]b", "a");
    TEST (0, "[a]b", "ab");
    TEST (1, "[a]b", "b");

    TEST (1, "a[b]", "");
    TEST (1, "a[b]", "a");
    TEST (0, "a[b]", "ab");
    TEST (1, "a[b]", "b");

    TEST (1, "a[bc]", "");
    TEST (1, "a[bc]", "a");
    TEST (0, "a[bc]", "ab");
    TEST (0, "a[bc]", "ac");
    TEST (1, "a[bc]", "abc");
    TEST (1, "a[\\]]", "ab");
    TEST (0, "a[\\]]", "a]");

    TEST (1, "[abc]", "");
    TEST (0, "[abc]", "a");
    TEST (0, "[abc]", "b");
    TEST (0, "[abc]", "c");
    TEST (1, "[abc]", "ab");
    TEST (1, "[abc]", "ac");
    TEST (1, "[abc]", "abc");

    // exercise negated bracket expressions
    TEST (1, "[!a]", "");
    TEST (1, "[!a]", "a");
    TEST (0, "[!a]", "b");
    TEST (1, "[!?]", "?");
    TEST (0, "[!?]", "c");
    TEST (1, "[!-]", "-");
    TEST (0, "[!-]", "d");
    TEST (1, "[!!]", "!");
    TEST (0, "[!!]", "e");

    TEST (1, "[!ab]", "");
    TEST (1, "[!ab]", "a");
    TEST (1, "[!ab]", "b");
    TEST (0, "[!ab]", "c");

    TEST (1, "[!a]b", "");
    TEST (1, "[!a]b", "a");
    TEST (1, "[!a]b", "ab");
    TEST (1, "[!a]b", "b");
    TEST (0, "[!a]b", "bb");

    TEST (1, "a[!b]", "");
    TEST (1, "a[!b]", "a");
    TEST (1, "a[!b]", "ab");
    TEST (1, "a[!b]", "b");
    TEST (0, "a[!b]", "ac");

    TEST (1, "a[!bc]", "");
    TEST (1, "a[!bc]", "a");
    TEST (1, "a[!bc]", "ab");
    TEST (1, "a[!bc]", "ac");
    TEST (0, "a[!bc]", "ad");
    TEST (0, "a[!!?]", "ae");
    TEST (0, "a[!?!]", "af");
    TEST (0, "a[!?-]", "ag");
    TEST (0, "a[!-?]", "ah");
    TEST (1, "a[!bc]", "aae");
    TEST (1, "a[!bc]", "abe");
    TEST (1, "a[!bc]", "ace");

    TEST (1, "[!abc]", "");
    TEST (1, "[!abc]", "a");
    TEST (1, "[!abc]", "b");
    TEST (1, "[!abc]", "c");
    TEST (0, "[!abc]", "d");
    TEST (1, "[!abc]", "ab");
    TEST (1, "[!abc]", "ac");
    TEST (1, "[!abc]", "ad");
    TEST (1, "[!abc]", "abc");
    TEST (1, "[!abc]", "abcd");

    TEST (1, "[!abc]d", "");
    TEST (1, "[!abc]d", "a");
    TEST (1, "[!abc]d", "b");
    TEST (1, "[!abc]d", "c");
    TEST (1, "[!abc]d", "d");
    TEST (0, "[!abc]d", "dd");
    TEST (1, "[!abc]d", "ab");
    TEST (1, "[!abc]d", "ac");
    TEST (1, "[!abc]d", "ad");
    TEST (1, "[!abc]d", "abc");
    TEST (1, "[!abc]d", "abcd");

    // exercise bracket expressions with ranges
    TEST (1, "[a-a]", "");
    TEST (0, "[a-a]", "a");
    TEST (1, "[a-a]", "b");
    TEST (1, "[a-a]", "ab");
    TEST (1, "[a-a]", "ba");

    TEST (1, "[a-b]", "");
    TEST (0, "[a-b]", "a");
    TEST (0, "[a-b]", "b");
    TEST (1, "[a-b]", "c");

    TEST (1, "[a-c]", "");
    TEST (0, "[a-c]", "a");
    TEST (0, "[a-c]", "b");
    TEST (0, "[a-c]", "c");
    TEST (1, "[a-c]", "d");

    TEST (1, "[a-ce]", "");
    TEST (0, "[a-ce]", "a");
    TEST (0, "[a-ce]", "b");
    TEST (0, "[a-ce]", "c");
    TEST (1, "[a-ce]", "d");
    TEST (0, "[a-ce]", "e");
    TEST (1, "[a-ce]", "f");

    TEST (1, "[ac-e]", "");
    TEST (0, "[ac-e]", "a");
    TEST (1, "[ac-e]", "b");
    TEST (0, "[ac-e]", "c");
    TEST (0, "[ac-e]", "d");
    TEST (0, "[ac-e]", "e");
    TEST (1, "[ac-e]", "f");

    TEST (1, "[ac-eg]", "");
    TEST (0, "[ac-eg]", "a");
    TEST (1, "[ac-eg]", "b");
    TEST (0, "[ac-eg]", "c");
    TEST (0, "[ac-eg]", "d");
    TEST (0, "[ac-eg]", "e");
    TEST (1, "[ac-eg]", "f");
    TEST (0, "[ac-eg]", "g");

    TEST (1, "[ac-egk-m]", "");
    TEST (0, "[ac-egk-m]", "a");
    TEST (1, "[ac-egk-m]", "b");
    TEST (0, "[ac-egk-m]", "c");
    TEST (0, "[ac-egk-m]", "d");
    TEST (0, "[ac-egk-m]", "e");
    TEST (1, "[ac-egk-m]", "f");
    TEST (0, "[ac-egk-m]", "g");
    TEST (1, "[ac-egk-m]", "h");
    TEST (1, "[ac-egk-m]", "i");
    TEST (1, "[ac-egk-m]", "j");
    TEST (0, "[ac-egk-m]", "k");
    TEST (0, "[ac-egk-m]", "l");
    TEST (0, "[ac-egk-m]", "m");
    TEST (1, "[ac-egk-m]", "n");

    TEST (1, "[1-9][0-9]", "");
    TEST (1, "[1-9][0-9]", "0");
    TEST (1, "[1-9][0-9]", "1");
    TEST (1, "[1-9][0-9]", "2");
    TEST (1, "[1-9][0-9]", "00");
    TEST (1, "[1-9][0-9]", "01");
    TEST (0, "[1-9][0-9]", "10");
    TEST (0, "[1-9][0-9]", "11");
    TEST (0, "[1-9][0-9]", "12");
    TEST (0, "[1-9][0-9]", "90");
    TEST (0, "[1-9][0-9]", "99");
    TEST (1, "[1-9][0-9]", "999");

    TEST (1, "[1-9].[0-9]", "0.1");
    TEST (0, "[1-9].[0-9]", "1.0");
    TEST (1, "[1-9].[0-9]", "1.0.0");

    // exercise mixed patterns
    TEST (1, "[1-9].[0-9]*", "1.");
    TEST (0, "[1-9].[0-9]*", "1.2");
    TEST (0, "[1-9].[0-9]*", "1.23");
    TEST (0, "[1-9].[0-9]*", "1.2x");
    TEST (0, "[1-9]?[0-9]*", "1-2y");

    TEST (1, "*-aix[1-9].[0-9]-xlc7.0.0.[0-9]", "ppc-aix4.3-xlc6.0");
    TEST (1, "*-aix[1-9].[0-9]-xlc7.0.0.[0-9]", "ppc-aix5.2-xlc6.0");
    TEST (0, "*-aix[1-9].[0-9]-xlc7.0.0.[0-9]", "ppc-aix4.3-xlc7.0.0.0");

    // exercise incomplete patterns
    TEST (1, "\\", "");
    TEST (1, "\\", "a");
    TEST (1, "\\", "\\");
    TEST (1, "[",  "");
    TEST (1, "[",  "a");
    TEST (1, "[",  "[");
    TEST (1, "[a", "");
    TEST (1, "[a", "[a");

    // return 0 on success, 1 on failure
    return !(0 == nerrors);
}
