Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Tarot
tarot
Commits
41876125
Commit
41876125
authored
Aug 12, 2018
by
Vivien Kraus
Browse files
Add some tests
parent
debf4b83
Pipeline
#68176
passed with stage
in 1 minute and 5 seconds
Changes
29
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
41876125
...
...
@@ -55,6 +55,7 @@ config.status
config.sub
configure
depcomp
doc/tarot-tmp.org
doc/tarot.html
doc/tarot.info
doc/tarot.pdf
...
...
@@ -95,6 +96,7 @@ src/core/check_composition
src/core/check_deal
src/core/check_do_deal
src/core/check_game_init
src/core/tarot/check_hand
src/gettext.h
src/guile/libtarot-guile.pc
src/lexer/check-lexer
...
...
INSTALL
deleted
100644 → 0
View file @
debf4b83
Installation
Instructions
*************************
Copyright
(
C
)
1994
-
1996
,
1999
-
2002
,
2004
-
2013
Free
Software
Foundation
,
Inc
.
Copying
and
distribution
of
this
file
,
with
or
without
modification
,
are
permitted
in
any
medium
without
royalty
provided
the
copyright
notice
and
this
notice
are
preserved
.
This
file
is
offered
as
-
is
,
without
warranty
of
any
kind
.
Basic
Installation
==================
Briefly
,
the
shell
command
`./
configure
&&
make
&&
make
install
'
should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README'
file
for
instructions
specific
to
this
package
.
Some
packages
provide
this
`
INSTALL
' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure'
shell
script
attempts
to
guess
correct
values
for
various
system
-
dependent
variables
used
during
compilation
.
It
uses
those
values
to
create
a
`
Makefile
' in each directory of the package.
It may also create one or more `.h'
files
containing
system
-
dependent
definitions
.
Finally
,
it
creates
a
shell
script
`
config
.
status
' that
you can run in the future to recreate the current configuration, and a
file `config.log'
containing
compiler
output
(
useful
mainly
for
debugging
`
configure
').
It can also use an optional file (typically called `config.cache'
and
enabled
with
`--
cache
-
file
=
config
.
cache
' or simply `-C'
)
that
saves
the
results
of
its
tests
to
speed
up
reconfiguring
.
Caching
is
disabled
by
default
to
prevent
problems
with
accidental
use
of
stale
cache
files
.
If
you
need
to
do
unusual
things
to
compile
the
package
,
please
try
to
figure
out
how
`
configure
' could check whether to do them, and mail
diffs or instructions to the address given in the `README'
so
they
can
be
considered
for
the
next
release
.
If
you
are
using
the
cache
,
and
at
some
point
`
config
.
cache
' contains results you don'
t
want
to
keep
,
you
may
remove
or
edit
it
.
The
file
`
configure
.
ac
' (or `configure.in'
)
is
used
to
create
`
configure
' by a program called `autoconf'
.
You
need
`
configure
.
ac
' if
you want to change it or regenerate `configure'
using
a
newer
version
of
`
autoconf
'.
The simplest way to compile this package is:
1. `cd'
to
the
directory
containing
the
package
's source code and type
`./configure'
to
configure
the
package
for
your
system
.
Running
`
configure
' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make'
to
compile
the
package
.
3.
Optionally
,
type
`
make
check
' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type `make install'
to
install
the
programs
and
any
data
files
and
documentation
.
When
installing
into
a
prefix
owned
by
root
,
it
is
recommended
that
the
package
be
configured
and
built
as
a
regular
user
,
and
only
the
`
make
install
' phase executed with root
privileges.
5. Optionally, type `make installcheck'
to
repeat
any
self
-
tests
,
but
this
time
using
the
binaries
in
their
final
installed
location
.
This
target
does
not
install
anything
.
Running
this
target
as
a
regular
user
,
particularly
if
the
prior
`
make
install
' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'
.
To
also
remove
the
files
that
`
configure
' created (so you can compile the package for
a different kind of computer), type `make distclean'
.
There
is
also
a
`
make
maintainer
-
clean
' target, but that is intended mainly
for the package'
s
developers
.
If
you
use
it
,
you
may
have
to
get
all
sorts
of
other
programs
in
order
to
regenerate
files
that
came
with
the
distribution
.
7.
Often
,
you
can
also
type
`
make
uninstall
' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck'
,
which
can
by
used
by
developers
to
test
that
all
other
targets
like
`
make
install
' and `make uninstall'
work
correctly
.
This
target
is
generally
not
run
by
end
users
.
Compilers
and
Options
=====================
Some
systems
require
unusual
options
for
compilation
or
linking
that
the
`
configure
' script does not know about. Run `./configure --help'
for
details
on
some
of
the
pertinent
environment
variables
.
You
can
give
`
configure
' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'
.
`
cd
' to the
directory where you want the object files and executables to go and run
the `configure'
script
.
`
configure
' automatically checks for the
source code in the directory that `configure'
is
in
and
in
`..
'. This
is known as a "VPATH" build.
With a non-GNU `make'
,
it
is
safer
to
compile
the
package
for
one
architecture
at
a
time
in
the
source
code
directory
.
After
you
have
installed
the
package
for
one
architecture
,
use
`
make
distclean
' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch'
options
to
the
compiler
but
only
a
single
`-
arch
' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo'
tool
if
you
have
problems
.
Installation
Names
==================
By
default
,
`
make
install
' installs the package'
s
commands
under
`/
usr
/
local
/
bin
', include files under `/usr/local/include'
,
etc
.
You
can
specify
an
installation
prefix
other
than
`/
usr
/
local
' by giving
`configure'
the
option
`--
prefix
=
PREFIX
', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX'
to
`
configure
', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR'
to
specify
different
values
for
particular
kinds
of
files
.
Run
`
configure
--
help
' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}'
,
so
that
specifying
just
`--
prefix
' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'
;
however
,
many
packages
provide
one
or
both
of
the
following
shortcuts
of
passing
variable
assignments
to
the
`
make
install
' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory'
will
choose
an
alternate
location
for
all
directory
configuration
variables
that
were
expressed
in
terms
of
`${
prefix
}
'. Any directories that were specified during `configure'
,
but
not
in
terms
of
`${
prefix
}
', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR'
variable
.
For
example
,
`
make
install
DESTDIR
=/
alternate
/
directory
' will prepend
`/alternate/directory'
before
all
installation
names
.
The
approach
of
`
DESTDIR
' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at
`
configure
' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure'
the
option
`--
program
-
prefix
=
PREFIX
' or `--program-suffix=SUFFIX'
.
Some
packages
pay
attention
to
`--
enable
-
FEATURE
' options to
`configure'
,
where
FEATURE
indicates
an
optional
part
of
the
package
.
They
may
also
pay
attention
to
`--
with
-
PACKAGE
' options, where PACKAGE
is something like `gnu-as'
or
`
x
' (for the X Window System). The
`README'
should
mention
any
`--
enable
-
' and `--with-'
options
that
the
package
recognizes
.
For
packages
that
use
the
X
Window
System
,
`
configure
' can usually
find the X include and library files automatically, but if it doesn'
t
,
you
can
use
the
`
configure
' options `--x-includes=DIR'
and
`--
x
-
libraries
=
DIR
' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make'
will
be
.
For
these
packages
,
running
`./
configure
--
enable
-
silent
-
rules
' sets the default to minimal output, which can be
overridden with `make V=1'
;
while
running
`./
configure
--
disable
-
silent
-
rules
' sets the default to verbose, which can be
overridden with `make V=0'
.
Particular
systems
==================
On
HP
-
UX
,
the
default
C
compiler
is
not
ANSI
C
compatible
.
If
GNU
CC
is
not
installed
,
it
is
recommended
to
use
the
following
options
in
order
to
use
an
ANSI
C
compiler
:
./
configure
CC
=
"cc -Ae -D_XOPEN_SOURCE=500"
and
if
that
doesn
't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make'
updates
targets
which
have
the
same
time
stamps
as
their
prerequisites
,
which
makes
it
generally
unusable
when
shipped
generated
files
such
as
`
configure
' are involved. Use GNU `make'
instead
.
On
OSF
/
1
a
.
k
.
a
.
Tru64
,
some
versions
of
the
default
C
compiler
cannot
parse
its
`<
wchar
.
h
>
' header file. The option `-nodtk'
can
be
used
as
a
workaround
.
If
GNU
CC
is
not
installed
,
it
is
therefore
recommended
to
try
./
configure
CC
=
"cc"
and
if
that
doesn
't work, try
./configure CC="cc -nodtk"
On Solaris, don'
t
put
`/
usr
/
ucb
' early in your `PATH'
.
This
directory
contains
several
dysfunctional
programs
;
working
variants
of
these
programs
are
available
in
`/
usr
/
bin
'. So, if you need `/usr/ucb'
in
your
`
PATH
', put it _after_ `/usr/bin'
.
On
Haiku
,
software
installed
for
all
users
goes
in
`/
boot
/
common
',
not `/usr/local'
.
It
is
recommended
to
use
the
following
options
:
./
configure
--
prefix
=/
boot
/
common
Specifying
the
System
Type
==========================
There
may
be
some
features
`
configure
' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure'
can
figure
that
out
,
but
if
it
prints
a
message
saying
it
cannot
guess
the
machine
type
,
give
it
the
`--
build
=
TYPE
' option. TYPE can either be a short name for the system
type, such as `sun4'
,
or
a
canonical
name
which
has
the
form
:
CPU
-
COMPANY
-
SYSTEM
where
SYSTEM
can
have
one
of
these
forms
:
OS
KERNEL
-
OS
See
the
file
`
config
.
sub
' for the possible values of each field. If
`config.sub'
isn
't included in this package, then this package doesn'
t
need
to
know
the
machine
type
.
If
you
are
_building_
compiler
tools
for
cross
-
compiling
,
you
should
use
the
option
`--
target
=
TYPE
' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'
.
Sharing
Defaults
================
If
you
want
to
set
default
values
for
`
configure
' scripts to share,
you can create a site shell script called `config.site'
that
gives
default
values
for
variables
like
`
CC
', `cache_file'
,
and
`
prefix
'.
`configure'
looks
for
`
PREFIX
/
share
/
config
.
site
' if it exists, then
`PREFIX/etc/config.site'
if
it
exists
.
Or
,
you
can
set
the
`
CONFIG_SITE
' environment variable to the location of the site script.
A warning: not all `configure'
scripts
look
for
a
site
script
.
Defining
Variables
==================
Variables
not
defined
in
a
site
shell
script
can
be
set
in
the
environment
passed
to
`
configure
'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure'
command
line
,
using
`
VAR
=
value
'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc'
to
be
used
as
the
C
compiler
(
unless
it
is
overridden
in
the
site
shell
script
).
Unfortunately
,
this
technique
does
not
work
for
`
CONFIG_SHELL
' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure'
Invocation
======================
`
configure
' recognizes the following options to control how it
operates.
`--help'
`-
h
'
Print a summary of all of the options to `configure'
,
and
exit
.
`--
help
=
short
'
`--help=recursive'
Print
a
summary
of
the
options
unique
to
this
package
's
`configure'
,
and
exit
.
The
`
short
' variant lists options used
only in the top level, while the `recursive'
variant
lists
options
also
present
in
any
nested
packages
.
`--
version
'
`-V'
Print
the
version
of
Autoconf
used
to
generate
the
`
configure
'
script, and exit.
`--cache-file=FILE'
Enable
the
cache
:
use
and
save
the
results
of
the
tests
in
FILE
,
traditionally
`
config
.
cache
'. FILE defaults to `/dev/null'
to
disable
caching
.
`--
config
-
cache
'
`-C'
Alias
for
`--
cache
-
file
=
config
.
cache
'.
`--quiet'
`--
silent
'
`-q'
Do
not
print
messages
saying
which
checks
are
being
made
.
To
suppress
all
normal
output
,
redirect
it
to
`/
dev
/
null
' (any error
messages will still be shown).
`--srcdir=DIR'
Look
for
the
package
's source code in directory DIR. Usually
`configure'
can
determine
that
directory
automatically
.
`--
prefix
=
DIR
'
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-
n
'
Run the configure checks, but stop before creating any output
files.
`configure'
also
accepts
some
other
,
not
widely
useful
,
options
.
Run
`
configure
--
help
' for more details.
Makefile.am
View file @
41876125
...
...
@@ -38,7 +38,8 @@ SUFFIXES =
dist_noinst_SCRIPTS
=
\
autogen.sh
\
.git/hooks/pre-commit
\
hooks/pre-commit.sh
hooks/pre-commit.sh
\
run-tarot.sh
nodist_noinst_DATA
=
ACLOCAL_AMFLAGS
=
-I
m4
-I
custom-m4
...
...
@@ -63,7 +64,6 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
--disable-gengetopt
\
--disable-help2man
AM_CPPFLAGS
=
\
-DLICENSEFILE
=
"
\"
$(pkgdatadir)
/COPYING
\"
"
\
-DLOCALEDIR
=
"
\"
$(localedir)
\"
"
\
-I
.
-I
$(srcdir)
AM_CFLAGS
=
...
...
@@ -78,9 +78,13 @@ AM_TESTS_ENVIRONMENT = $(LIBTOOL) --mode=execute
if
HAVE_VALGRIND
AM_TESTS_ENVIRONMENT
+=
$(VALGRIND)
--tool
=
memcheck
endif
# HAVE_VALGRIND
TEST_EXTENSIONS
=
.tarot
TAROT_LOG_COMPILER
=
$(SHELL)
$(top_srcdir)
/run-tarot.sh
AM_TAROT_LOG_FLAGS
=
include
doc/Makefile.am
include
src/Makefile.am
include
games/Makefile.am
TESTS
+=
$(check_PROGRAMS)
indent_verbose
=
$
(
indent_verbose_@AM_V@
)
...
...
games/Makefile.am
0 → 100644
View file @
41876125
# Makefile.am
#
# Copyright (C) 2018 Vivien Kraus <vivien@planete-kraus.eu>
#
# 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 3 of the
# License, 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, see
# <http://www.gnu.org/licenses/>.
gamesdir
=
$(pkgdatadir)
/games
include
%reldir%/fail/Makefile.am
# include %reldir%/pass/Makefile.am
games/fail/Makefile.am
0 → 100644
View file @
41876125
# Makefile.am
#
# Copyright (C) 2018 Vivien Kraus <vivien@planete-kraus.eu>
#
# 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 3 of the
# License, 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, see
# <http://www.gnu.org/licenses/>.
fail_tests
=
\
%reldir%/discard_forgetting_prio.tarot
\
%reldir%/discard_not_expected.tarot
\
%reldir%/discard_should_be_given.tarot
\
%reldir%/discard_shown_not_trumps.tarot
\
%reldir%/dog.tarot
\
%reldir%/handful_forgot.tarot
\
%reldir%/two_setup.tarot
\
%reldir%/petit_sec.tarot
TESTS
+=
$(fail_tests)
EXTRA_DIST
+=
\
%reldir%/discard_forgetting_prio.tarot.expected
\
%reldir%/discard_not_expected.tarot.expected
\
%reldir%/discard_should_be_given.tarot.expected
\
%reldir%/discard_shown_not_trumps.tarot.expected
\
%reldir%/dog.tarot.expected
\
%reldir%/handful_forgot.tarot.expected
\
%reldir%/two_setup.tarot.expected
\
%reldir%/petit_sec.tarot.expected
\
$(fail_tests)
games/fail/discard_forgetting_prio.tarot
0 → 100644
View file @
41876125
status
setup -n 5 -w
status
deal --to P5 21T 20T 19T 18T 13T 12T 11T 10T 9T 8T 4T 1T KH KD QD
status
bid take
status
bid pass
status
bid pass
status
bid pass
status
bid push
status
decl slam
status
call KC
status
dog 15T KS EXC
status
discard 9T 8T 4T
\ No newline at end of file
games/fail/discard_forgetting_prio.tarot.expected
0 → 100644
View file @
41876125
tarot Copyright (C) 2018 Vivien Kraus
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type `license' for details.
> status
A game for 4 players.
If the game options are OK, then waiting for the deal.
> setup -n 5 -w
> status
A game for 5 players, with call.
Waiting for the deal.
> deal --to P5 21T 20T 19T 18T 13T 12T 11T 10T 9T 8T 4T 1T KH KD QD
> status
A game for 5 players, with call.
Waiting for P1 to bid.
> bid take
> status
A game for 5 players, with call.
Waiting for P2 to pass or at least push.
> bid pass
> status
A game for 5 players, with call.
Waiting for P3 to pass or at least push.
> bid pass
> status
A game for 5 players, with call.
Waiting for P4 to pass or at least push.
> bid pass
> status
A game for 5 players, with call.
Waiting for P5 to pass or at least push.
> bid push
> status
A game for 5 players, with call.
Waiting for P1 to make a slam declaration.
> decl slam
> status
A game for 5 players, with call.
Waiting for P5 to call a king.
> call KC
> status
A game for 5 players, with call.
Waiting for the dog.
> dog 15T KS EXC
> status
A game for 5 players, with call.
Waiting for P5 to discard the following cards:
- QD
And 2 out of the following cards:
- 4T, 8T, 9T, 10T, 11T, 12T, 13T, 15T, 18T, 19T, 20T
> discard 9T 8T 4T
Error: this is not possible.
>
\ No newline at end of file
games/fail/discard_not_expected.tarot
0 → 100644
View file @
41876125
setup -n 5 -w
deal --to P5 21T 20T 13T 9T 8T 4T 1T KH QH CH KD QD 2D AD 8C
bid take
bid pass
bid pass
bid pass
bid push
decl slam
call KC
dog AH KS EXC
status
discard 8S AD 2D
\ No newline at end of file
games/fail/discard_not_expected.tarot.expected
0 → 100644
View file @
41876125
tarot Copyright (C) 2018 Vivien Kraus
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type `license' for details.
> setup -n 5 -w
> deal --to P5 21T 20T 13T 9T 8T 4T 1T KH QH CH KD QD 2D AD 8C
> bid take
> bid pass
> bid pass
> bid pass
> bid push
> decl slam
> call KC
> dog AH KS EXC
> status
A game for 5 players, with call.
Waiting for P5 to discard 3 cards from:
- AH, CH, QH
- 8C
- AD, 2D, QD
> discard 8S AD 2D
Error: this is not possible.
>
\ No newline at end of file
games/fail/discard_should_be_given.tarot
0 → 100644
View file @
41876125
setup -n 5
deal P6 P1 P4 P4 P4 P4 P4 P3 P2 P1 P3 P5 P5 P5 P2 P3 P2 P2 P3 P3 P4 P5 P1 P2 P4 P3 P1 P1 P5 P5 P1 P3 P1 P4 P2 P3 P4 P4 P2 P3 P5 P5 P4 P2 P3 P4 P2 P1 P1 P2 P4 P2 P1 P3 P3 P6 P5 P2 P2 P5 P1 P4 P3 P5 P5 P1 P1 P3 P5 P2 P3 P4 P2 P1 P1 P5 P5 P6
bid take
bid pass
bid pass
bid pass
bid push
decl pass
decl slam
status
discard
\ No newline at end of file
games/fail/discard_should_be_given.tarot.expected
0 → 100644
View file @
41876125
tarot Copyright (C) 2018 Vivien Kraus
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type `license' for details.
> setup -n 5
> <5 P1 P4 P3 P5 P5 P1 P1 P3 P5 P2 P3 P4 P2 P1 P1 P5 P5 P6
> bid take
> bid pass
> bid pass
> bid pass
> bid push
> decl pass
> decl slam
> status