Add tests for enum values and static const member variables chars containing escape sequences

This commit is contained in:
William S Fulton 2016-01-26 20:16:47 +00:00
commit 62c34fc9d9
5 changed files with 85 additions and 1 deletions

View file

@ -12,4 +12,23 @@ char GetUnprintableChar() {
return 0x7F; return 0x7F;
} }
static const char globchar0 = '\0';
static const char globchar1 = '\1';
static const char globchar2 = '\n';
static const char globcharA = 'A';
static const char globcharB = '\102'; // B
static const char globcharC = '\x43'; // C
static const char globcharD = 0x44; // D
static const char globcharE = 69; // E
struct CharTestClass {
static const char memberchar0 = '\0';
static const char memberchar1 = '\1';
static const char memberchar2 = '\n';
static const char membercharA = 'A';
static const char membercharB = '\102'; // B
static const char membercharC = '\x43'; // C
static const char membercharD = 0x44; // D
static const char membercharE = 69; // E
};
%} %}

View file

@ -379,6 +379,7 @@ CPP_TEST_CASES += \
static_array_member \ static_array_member \
static_const_member \ static_const_member \
static_const_member_2 \ static_const_member_2 \
string_constants \
struct_initialization_cpp \ struct_initialization_cpp \
struct_value \ struct_value \
symbol_clash \ symbol_clash \

View file

@ -77,6 +77,10 @@
// char // char
char chartest1(char c = 'x') { return c; } char chartest1(char c = 'x') { return c; }
char chartest2(char c = '\0') { return c; } char chartest2(char c = '\0') { return c; }
char chartest3(char c = '\1') { return c; }
char chartest4(char c = '\n') { return c; }
char chartest5(char c = '\102') { return c; } // 'B'
char chartest6(char c = '\x43') { return c; } // 'C'
// namespaces // namespaces
namespace AType { namespace AType {

View file

@ -585,7 +585,50 @@ enum {
}; };
int globalDifferentTypesTest(int n) { return n; } int globalDifferentTypesTest(int n) { return n; }
} }
%}
#if defined(SWIGJAVA)
%javaconst(0) enumcharC;
%javaconst(0) globalenumcharC;
#elif defined(SWIGCSHARP)
%csconstvalue("1") globalenumchar1;
%csconstvalue("'B'") globalenumcharB;
%csconstvalue("1") enumchar1;
%csconstvalue("'B'") enumcharB;
#endif
%inline %{
enum {
globalenumchar0 = '\0',
globalenumchar1 = '\1',
globalenumchar2 = '\n',
globalenumcharA = 'A',
globalenumcharB = '\102', // B
globalenumcharC = '\x43', // C
globalenumcharD = 0x44, // D
globalenumcharE = 69 // E
};
enum EnumChar {
enumchar0 = '\0',
enumchar1 = '\1',
enumchar2 = '\n',
enumcharA = 'A',
enumcharB = '\102', // B
enumcharC = '\x43', // C
enumcharD = 0x44, // D
enumcharE = 69 // E
};
struct EnumCharStruct {
enum EnumChar {
enumchar0 = '\0',
enumchar1 = '\1',
enumchar2 = '\n',
enumcharA = 'A',
enumcharB = '\102', // B
enumcharC = '\x43', // C
enumcharD = 0x44, // D
enumcharE = 69 // E
};
};
%} %}
#if defined(SWIGJAVA) #if defined(SWIGJAVA)
@ -614,5 +657,4 @@ enum {
global_typedefaultint_noconst global_typedefaultint_noconst
}; };
} }
%} %}

View file

@ -136,5 +136,23 @@ def run(module_name):
if default_args.CDA().cdefaultargs_test2() != 1: if default_args.CDA().cdefaultargs_test2() != 1:
raise RuntimeError raise RuntimeError
if default_args.chartest1() != 'x':
raise RuntimeError
if default_args.chartest2() != '\0':
raise RuntimeError
if default_args.chartest3() != '\1':
raise RuntimeError
if default_args.chartest4() != '\n':
raise RuntimeError
if default_args.chartest5() != 'B':
raise RuntimeError
if default_args.chartest6() != 'C':
raise RuntimeError
if __name__ == "__main__": if __name__ == "__main__":
run('default_args') run('default_args')