The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl -w

use strict;

use ExtUtils::testlib;

use GSSAPI qw(:all);

my @constants_to_be_checked
    = qw( GSS_C_ACCEPT
          GSS_C_AF_APPLETALK
          GSS_C_AF_BSC
          GSS_C_AF_CCITT
          GSS_C_AF_CHAOS
          GSS_C_AF_DATAKIT
          GSS_C_AF_DECnet
          GSS_C_AF_DLI
          GSS_C_AF_DSS
          GSS_C_AF_ECMA
          GSS_C_AF_HYLINK
          GSS_C_AF_IMPLINK
          GSS_C_AF_INET
          GSS_C_AF_LAT
          GSS_C_AF_LOCAL
          GSS_C_AF_NBS
          GSS_C_AF_NS
          GSS_C_AF_NULLADDR
          GSS_C_AF_OSI
          GSS_C_AF_PUP
          GSS_C_AF_SNA
          GSS_C_AF_UNSPEC
          GSS_C_AF_X25
          GSS_C_ANON_FLAG
          GSS_C_BOTH
          GSS_C_CALLING_ERROR_MASK
          GSS_C_CALLING_ERROR_OFFSET
          GSS_C_CONF_FLAG
          GSS_C_DELEG_FLAG
          GSS_C_GSS_CODE
          GSS_C_INDEFINITE
          GSS_C_INITIATE
          GSS_C_INTEG_FLAG
          GSS_C_MECH_CODE
          GSS_C_MUTUAL_FLAG
          GSS_C_PROT_READY_FLAG
          GSS_C_QOP_DEFAULT
          GSS_C_REPLAY_FLAG
          GSS_C_ROUTINE_ERROR_MASK
          GSS_C_ROUTINE_ERROR_OFFSET
          GSS_C_SEQUENCE_FLAG
          GSS_C_SUPPLEMENTARY_MASK
          GSS_C_SUPPLEMENTARY_OFFSET
          GSS_C_TRANS_FLAG
          GSS_S_BAD_BINDINGS
          GSS_S_BAD_MECH
          GSS_S_BAD_NAME
          GSS_S_BAD_NAMETYPE
          GSS_S_BAD_QOP
          GSS_S_BAD_SIG
          GSS_S_BAD_STATUS
          GSS_S_CALL_BAD_STRUCTURE
          GSS_S_CALL_INACCESSIBLE_READ
          GSS_S_CALL_INACCESSIBLE_WRITE
          GSS_S_COMPLETE
          GSS_S_CONTEXT_EXPIRED
          GSS_S_CONTINUE_NEEDED
          GSS_S_CREDENTIALS_EXPIRED
          GSS_S_DEFECTIVE_CREDENTIAL
          GSS_S_DEFECTIVE_TOKEN
          GSS_S_DUPLICATE_ELEMENT
          GSS_S_DUPLICATE_TOKEN
          GSS_S_FAILURE
          GSS_S_GAP_TOKEN
          GSS_S_NAME_NOT_MN
          GSS_S_NO_CONTEXT
          GSS_S_NO_CRED
          GSS_S_OLD_TOKEN
          GSS_S_UNAUTHORIZED
          GSS_S_UNAVAILABLE
          GSS_S_UNSEQ_TOKEN
         );

use Test::More tests => 72;


do_constanttest( $_ ) foreach (@constants_to_be_checked);


SKIP: {
  if( GSSAPI::gssapi_implementation_is_heimdal() ) {
     skip('GSS_S_CRED_UNAVAIL not defined on Heimdal', 1);
  }
  do_constanttest( 'GSS_S_CRED_UNAVAIL' );
}


sub do_constanttest {
   my ( $constname ) = @_;
   my $constvalue;
   eval " \$constvalue = $constname";
   ok( ! $@,  "$constname" );
}