# Process this file with autom4te to create testsuite. -*- Autotest -*-

# Test suite for GNU Bison.
# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.


# Testing resistance to user bugs.
m4_include([input.at])

# Testing output file names.
m4_include([output.at])

# Testing the part of the engine that computes FOLLOW etc.
m4_include([sets.at])

# Testing grammar reduction.
m4_include([reduce.at])

# Testing that #lines are correct.
m4_include([synclines.at])

# Testing that headers are sane.
m4_include([headers.at])

# Testing that user actions are properly performed.
m4_include([actions.at])

# Testing conflicts detection and resolution.
m4_include([conflicts.at])

# Fulling testing (compilation and execution of the parser) on calc.
m4_include([calc.at])

# Huge artificial grammars.
# Torturing the stack expansion at runtime.
m4_include([torture.at])

# Checking big, real world grammars.
m4_include([existing.at])

# Some old bugs.
m4_include([regression.at])

# Some C++ specific tests.
m4_include([c++.at])

# GLR tests:
# C++ types, simplified
m4_include([cxx-type.at])
# Regression tests
m4_include([glr-regression.at])
