/***********************************************************************
 *                                                                      *
 *               This software is part of the ast package               *
 *          Copyright (c) 1982-2011 AT&T Intellectual Property          *
 *                      and is licensed under the                       *
 *                 Eclipse Public License, Version 1.0                  *
 *                    by AT&T Intellectual Property                     *
 *                                                                      *
 *                A copy of the License is available at                 *
 *          http://www.eclipse.org/org/documents/epl-v10.html           *
 *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
 *                                                                      *
 *              Information and Software Systems Research               *
 *                            AT&T Research                             *
 *                           Florham Park NJ                            *
 *                                                                      *
 *                    David Korn <dgkorn@gmail.com>                     *
 *                                                                      *
 ***********************************************************************/
//
// UNIX shell
// David Korn
// AT&T Labs
//
#ifndef _TEST_H
#define _TEST_H 1

#include "shell.h"

//
// These are the valid test operators.
//
#define TEST_ARITH 040     // arithmetic operators
#define TEST_BINOP 0200    // binary operator
#define TEST_PATTERN 0100  // turn off bit for pattern compares

#define TEST_NE (TEST_ARITH | 9)
#define TEST_EQ (TEST_ARITH | 4)
#define TEST_GE (TEST_ARITH | 5)
#define TEST_GT (TEST_ARITH | 6)
#define TEST_LE (TEST_ARITH | 7)
#define TEST_LT (TEST_ARITH | 8)
#define TEST_OR (TEST_BINOP | 1)
#define TEST_AND (TEST_BINOP | 2)
#define TEST_SNE (TEST_PATTERN | 1)
#define TEST_SEQ (TEST_PATTERN | 14)
#define TEST_PNE 1
#define TEST_PEQ 14
#define TEST_EF 3
#define TEST_NT 10
#define TEST_OT 12
#define TEST_SLT 16
#define TEST_SGT 17
#define TEST_END 8
#define TEST_REP 20

extern int test_unop(Shell_t *, int, const char *);
extern int test_inode(const char *, const char *);
extern int test_binop(Shell_t *, int, const char *, const char *);

extern const char *test_opchars;
extern const char *e_argument;
extern const char *e_missing;
extern const char *e_badop;
extern const char *e_test_no_pattern;
extern const char *e_op_unhandled;
extern const char *e_tstbegin;
extern const char *e_tstend;

#endif  // _TEST_H
