Files
Manish Bera f38bf2917b Add unit tests for cppumaker
Change-Id: I4f53f7ee2d7f5147d09e0ff3bbde9f48f10ff85a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203324
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2026-10-04 13:32:46 +02:00

455 lines
23 KiB
Plaintext

module test
{
module codemaker
{
module codemakertests
{
// --- ENUMS ---
// Simple enum with negative and positive values
published enum Enum1 { VALUE_NEG = -1, VALUE_ZERO = 0, VALUE_POS = 1 };
// Bit-flag enum for testing combined values
published enum Enum2 {
FLAG_NONE = 0,
FLAG_READ = 1,
FLAG_WRITE = 2,
FLAG_EXEC = 4,
FLAG_ALL = FLAG_READ | FLAG_WRITE | FLAG_EXEC
};
// Enum with explicit large values and gaps
published enum Enum3 { FIRST = 10, SECOND = 20, THIRD = 100, FOURTH = 0xFF };
// Enum without explicit values (auto-increment)
published enum Enum4 { AUTO_A, AUTO_B, AUTO_C };
// --- CONSTANT GROUPS ---
/** Constants covering all scalar base types */
published constants TestConstantsBasic
{
// Signed 16-bit
const short SHORT_MIN = -32768;
const short SHORT_MAX = 32767;
// Unsigned 16-bit
const unsigned short USHORT_MAX = 65535;
// Signed 32-bit
const long LONG_MIN = -2147483648;
const long LONG_MAX = 2147483647;
// Hex literal with L suffix
const long LONG_HEX = 0x7FFFFFFFL;
// Unsigned 32-bit
const unsigned long ULONG_MAX = 4294967295L;
// Signed 64-bit
const hyper HYPER_MIN = -9223372036854775808;
const hyper HYPER_MAX = 9223372036854775807;
// Boolean constants
const boolean BOOL_TRUE = TRUE;
const boolean BOOL_FALSE = FALSE;
};
// Simple Struct which will be used as a typedef type
struct Struct1
{
long member1;
};
// PolyStruct with if and else which are keywords in most languages
// It is here to check now the maker tools handles the keywords as variables
struct PolyStruct<if, else>
{
if
member1;
long member2;
};
// --- TYPEDEF GROUPS ---
/**Comprehensive set of typedef declarations covering:
- Primitive UNO data types along with their corresponding sequence (array) types
- Type aliases for interfaces and structures
- Inheritance scenarios demonstrating type references from both the current and external modules
*/
typedef boolean Boolean;
typedef byte Byte;
typedef short Short;
typedef unsigned short UnsignedShort;
typedef long Long;
typedef unsigned long UnsignedLong;
typedef hyper Hyper;
typedef unsigned hyper UnsignedHyper;
typedef float Float;
typedef double Double;
typedef char Char;
typedef string String;
typedef type Type;
typedef any Any;
typedef Enum2 Enum;
typedef Struct1 Struct;
typedef com::sun::star::uno::XInterface XInterface;
typedef com::sun::star::uno::XNamingService XNamingService;
typedef sequence<Boolean> SequenceBoolean;
typedef sequence<Byte> SequenceByte;
typedef sequence<Short> SequenceShort;
typedef sequence<UnsignedShort> SequenceUnsignedShort;
typedef sequence<Long> SequenceLong;
typedef sequence<UnsignedLong> SequenceUnsignedLong;
typedef sequence<Hyper> SequenceHyper;
typedef sequence<UnsignedHyper> SequenceUnsignedHyper;
typedef sequence<Float> SequenceFloat;
typedef sequence<Double> SequenceDouble;
typedef sequence<Char> SequenceChar;
typedef sequence<String> SequenceString;
typedef sequence<Type> SequenceType;
typedef sequence<Any> SequenceAny;
typedef sequence<Enum> SequenceEnum;
typedef sequence<Struct> SequenceStruct;
typedef sequence<XInterface> SequenceXInterface;
typedef sequence<XNamingService> SequenceXNamingService;
// --- STRUCT GROUPS ---
/** Struct2 is a comprehensive structure used to demonstrate the full range of supported UNO IDL data types.
It includes:
- Primitive types
- Custom typedefs
- Interface and struct references (from same and external modules)
- Single and nested sequences (1D and 2D arrays)
- Sequences of typedefs (alias-based sequences) */
struct Struct2
{
// --- Primitive Types ---
boolean p1;
byte p2;
short p3;
unsigned short p4;
long p5;
unsigned long p6;
hyper p7;
unsigned hyper p8;
float p9;
double p10;
char p11;
string p12;
type p13;
any p14;
// --- User-Defined Types (from same or external modules) ---
Enum2 p15;
Struct1 p16;
com::sun::star::uno::XInterface p17;
com::sun::star::uno::XNamingService p18;
// --- Typedef Variants of Above Types ---
Boolean t1;
Byte t2;
Short t3;
UnsignedShort t4;
Long t5;
UnsignedLong t6;
Hyper t7;
UnsignedHyper t8;
Float t9;
Double t10;
Char t11;
String t12;
Type t13;
Any t14;
Enum t15;
Struct t16;
XInterface t17;
XNamingService t18;
// --- Sequences of Primitive and Custom Types ---
sequence<boolean> a1;
sequence<byte> a2;
sequence<short> a3;
sequence<unsigned short> a4;
sequence<long> a5;
sequence<unsigned long> a6;
sequence<hyper> a7;
sequence<unsigned hyper> a8;
sequence<float> a9;
sequence<double> a10;
sequence<char> a11;
sequence<string> a12;
sequence<type> a13;
sequence<any> a14;
sequence<Enum2> a15;
sequence<Struct1> a16;
sequence<com::sun::star::uno::XInterface> a17;
sequence<com::sun::star::uno::XNamingService> a18;
// --- Nested Sequences (2D Arrays) ---
sequence< sequence< boolean > > aa1;
sequence< sequence< byte > > aa2;
sequence< sequence< short > > aa3;
sequence< sequence< unsigned short > > aa4;
sequence< sequence< long > > aa5;
sequence< sequence< unsigned long > > aa6;
sequence< sequence< hyper > > aa7;
sequence< sequence< unsigned hyper> > aa8;
sequence< sequence< float > > aa9;
sequence< sequence< double > > aa10;
sequence< sequence< char > > aa11;
sequence< sequence< string > > aa12;
sequence< sequence< type > > aa13;
sequence< sequence< any > > aa14;
sequence< sequence< Enum2 > > aa15;
sequence< sequence< Struct1 > > aa16;
sequence< sequence< com::sun::star::uno::XInterface > > aa17;
sequence< sequence< com::sun::star::uno::XNamingService > > aa18;
// --- Sequence of Typedefs ---
sequence<SequenceBoolean> at1;
sequence<SequenceByte> at2;
sequence<SequenceShort> at3;
sequence<SequenceUnsignedShort> at4;
sequence<SequenceLong> at5;
sequence<SequenceUnsignedLong> at6;
sequence<SequenceHyper> at7;
sequence<SequenceUnsignedHyper> at8;
sequence<SequenceFloat> at9;
sequence<SequenceDouble> at10;
sequence<SequenceChar> at11;
sequence<SequenceString> at12;
sequence<SequenceType> at13;
sequence<SequenceAny> at14;
sequence<SequenceEnum> at15;
sequence<SequenceStruct> at16;
sequence<SequenceXInterface> at17;
sequence<SequenceXNamingService> at18;
};
module exceptions
{
// Test case 1: An exception with custom members
exception MyBaseError : com::sun::star::uno::Exception
{
long ErrorCode;
string Details;
};
// Test case 2: An exception with no custom members
exception SimpleError : com::sun::star::uno::Exception{};
};
interface XTest
{
boolean test();
[ attribute, bound ] long A1;
[ attribute, bound, readonly ] long A2;
[attribute] long A3 {
get raises(com::sun::star::uno::Exception,
com::sun::star::lang::ClassNotFoundException);
set raises(com::sun::star::uno::RuntimeException);
};
[attribute, readonly] long A4 {
get raises(com::sun::star::uno::DeploymentException);
};
};
service S1 : test::codemaker::codemakertests::XTest
{
create1();
create2([in] any... create2) raises(com::sun::star::uno::RuntimeException,
com::sun::star::lang::ClassNotFoundException,
com::sun::star::uno::Exception,
com::sun::star::lang::IllegalAccessException,
com::sun::star::uno::DeploymentException);
create3([in] sequence<any> S1) raises(com::sun::star::uno::RuntimeException,
com::sun::star::lang::ClassNotFoundException,
com::sun::star::lang::IllegalAccessException,
com::sun::star::uno::DeploymentException);
create4([in] long javamaker, [in] long S1, [in] long create4);
create5(
[in] boolean p1, [in] byte p2, [in] short p3, [in] unsigned short p4,
[in] long p5, [in] unsigned long p6, [in] hyper p7, [in] unsigned hyper p8,
[in] float p9, [in] double p10, [in] char p11, [in] string p12, [in] type p13,
[in] any p14, [in] Enum2 p15, [in] Struct1 p16,
[in] com::sun::star::uno::XInterface p17,
[in] com::sun::star::uno::XNamingService p18, [in] Boolean t1, [in] Byte t2,
[in] Short t3, [in] UnsignedShort t4, [in] Long t5, [in] UnsignedLong t6,
[in] Hyper t7, [in] UnsignedHyper t8, [in] Float t9, [in] Double t10,
[in] Char t11, [in] String t12, [in] Type t13, [in] Any t14, [in] Enum t15,
[in] Struct t16, [in] XInterface t17, [in] XNamingService t18,
[in] sequence<boolean> a1, [in] sequence<byte> a2, [in] sequence<short> a3,
[in] sequence<unsigned short> a4, [in] sequence<long> a5,
[in] sequence<unsigned long> a6, [in] sequence<hyper> a7,
[in] sequence<unsigned hyper> a8, [in] sequence<float> a9,
[in] sequence<double> a10, [in] sequence<char> a11, [in] sequence<string> a12,
[in] sequence<type> a13, [in] sequence<any> a14, [in] sequence<Enum2> a15,
[in] sequence<Struct1> a16, [in] sequence<com::sun::star::uno::XInterface> a17,
[in] sequence<com::sun::star::uno::XNamingService> a18,
[in] sequence<sequence< boolean> > aa1, [in] sequence< sequence< byte > > aa2,
[in] sequence< sequence< short > > aa3, [in] sequence< sequence< unsigned short > > aa4,
[in] sequence< sequence< long > > aa5, [in] sequence< sequence < unsigned long> > aa6,
[in] sequence< sequence< hyper > > aa7, [in] sequence< sequence< unsigned hyper > > aa8,
[in] sequence< sequence< float > > aa9, [in] sequence< sequence< double > > aa10,
[in] sequence< sequence< char > > aa11, [in] sequence< sequence< string > > aa12,
[in] sequence< sequence < type > > aa13, [in] sequence < sequence < any > > aa14,
[in] sequence< sequence < Enum2 > > aa15, [in] sequence< sequence < Struct1 > > aa16,
[in] sequence< sequence< com::sun::star::uno::XInterface > > aa17,
[in] sequence< sequence< com::sun::star::uno::XNamingService > > aa18,
[in] sequence<SequenceBoolean> at1, [in] sequence<SequenceByte> at2,
[in] sequence<SequenceShort> at3, [in] sequence<SequenceUnsignedShort> at4,
[in] sequence<SequenceLong> at5, [in] sequence<SequenceUnsignedLong> at6,
[in] sequence<SequenceHyper> at7, [in] sequence<SequenceUnsignedHyper> at8,
[in] sequence<SequenceFloat> at9, [in] sequence<SequenceDouble> at10,
[in] sequence<SequenceChar> at11, [in] sequence<SequenceString> at12,
[in] sequence<SequenceType> at13, [in] sequence<SequenceAny> at14,
[in] sequence<SequenceEnum> at15, [in] sequence<SequenceStruct> at16,
[in] sequence<SequenceXInterface> at17,
[in] sequence<SequenceXNamingService> at18);
};
service S2 : XTest;
service S3 { interface XTest; };
service Service : com::sun::star::uno::XInterface { create([in] any... args); };
interface XIfc
{
void f1([in] PolyStruct<long, long> arg);
void f2([in] PolyStruct<any, com::sun::star::uno::XInterface> arg);
};
module services
{
service abstract : com::sun::star::uno::XInterface
{
abstract([in] long abstract);
};
service assert : com::sun::star::uno::XInterface { assert([in] long assert); };
//TODO: boolean
service break : com::sun::star::uno::XInterface { break([in] long break); };
//TODO: byte
//TODO: case
service catch : com::sun::star::uno::XInterface { catch ([in] long catch); };
//TODO: char
service class : com::sun::star::uno::XInterface
{
class([in] long class);
};
//TODO: const
service continue : com::sun::star::uno::XInterface
{
continue([in] long continue);
};
//TODO: default
service do : com::sun::star::uno::XInterface
{
do
([in] long do);
};
//TODO: double
service else : com::sun::star::uno::XInterface { else([in] long else); };
//TODO: enum
service extends : com::sun::star::uno::XInterface { extends([in] long extends); };
service final : com::sun::star::uno::XInterface { final([in] long final); };
service finally : com::sun::star::uno::XInterface { finally([in] long finally); };
//TODO: float
service for: com::sun::star::uno::XInterface
{ for([in] long for)
;
};
service goto : com::sun::star::uno::XInterface { goto([in] long goto); };
service if : com::sun::star::uno::XInterface
{
if ([in] long if)
;
};
service implements : com::sun::star::uno::XInterface
{
implements([in] long implements);
};
service import : com::sun::star::uno::XInterface { import([in] long import); };
service instanceof : com::sun::star::uno::XInterface
{
instanceof ([in] long instanceof);
};
service int : com::sun::star::uno::XInterface { int([in] long int); };
//TODO: interface
//TODO: long
service native : com::sun::star::uno::XInterface { native([in] long native); };
service new : com::sun::star::uno::XInterface { new ([in] long new); };
service package : com::sun::star::uno::XInterface { package([in] long package); };
service private : com::sun::star::uno::XInterface
{
private
([in] long private);
};
service protected : com::sun::star::uno::XInterface
{
protected
([in] long protected);
};
service public : com::sun::star::uno::XInterface
{
public
([in] long public);
};
service return : com::sun::star::uno::XInterface { return ([in] long return ); };
//TODO: short
service static : com::sun::star::uno::XInterface { static([in] long static); };
service strictfp : com::sun::star::uno::XInterface
{
strictfp([in] long strictfp);
};
service super : com::sun::star::uno::XInterface { super([in] long super); };
//TODO: switch
service synchronized : com::sun::star::uno::XInterface
{
synchronized([in] long synchronized);
};
service this : com::sun::star::uno::XInterface { this([in] long this); };
service throw : com::sun::star::uno::XInterface { throw([in] long throw); };
service throws : com::sun::star::uno::XInterface { throws([in] long throws); };
//TODO: transient
service try : com
::sun::star::uno::XInterface
{
try
([in] long try);
};
//TODO: void
service volatile : com::sun::star::uno::XInterface
{
volatile([in] long volatile);
};
service while : com::sun::star::uno::XInterface
{
while ([in] long while)
;
};
};
singleton S4 : XTest;
singleton abstract : com::sun::star::uno::XNamingService;
singleton assert : com::sun::star::uno::XNamingService;
//TODO: singleton boolean: com::sun::star::uno::XNamingService;
singleton break : com::sun::star::uno::XNamingService;
//TODO: singleton byte: com::sun::star::uno::XNamingService;
//TODO: singleton case: com::sun::star::uno::XNamingService;
singleton catch : com::sun::star::uno::XNamingService;
//TODO: singleton char: com::sun::star::uno::XNamingService;
singleton class : com::sun::star::uno::XNamingService;
//TODO: singleton const: com::sun::star::uno::XNamingService;
singleton continue : com::sun::star::uno::XNamingService;
//TODO: singleton default: com::sun::star::uno::XNamingService;
singleton do : com::sun::star::uno::XNamingService;
//TODO: singleton double: com::sun::star::uno::XNamingService;
singleton else : com::sun::star::uno::XNamingService;
//TODO: singleton enum: com::sun::star::uno::XNamingService;
singleton extends : com::sun::star::uno::XNamingService;
singleton final : com::sun::star::uno::XNamingService;
singleton finally : com::sun::star::uno::XNamingService;
//TODO: singleton float: com::sun::star::uno::XNamingService;
singleton for: com::sun::star::uno::XNamingService;
singleton goto : com::sun::star::uno::XNamingService;
singleton if : com::sun::star::uno::XNamingService;
singleton implements : com::sun::star::uno::XNamingService;
singleton import : com::sun::star::uno::XNamingService;
singleton instanceof : com::sun::star::uno::XNamingService;
singleton int : com::sun::star::uno::XNamingService;
//TODO: singleton interface: com::sun::star::uno::XNamingService;
//TODO: singleton long: com::sun::star::uno::XNamingService;
singleton native : com::sun::star::uno::XNamingService;
singleton new : com::sun::star::uno::XNamingService;
singleton package : com::sun::star::uno::XNamingService;
singleton private : com::sun::star::uno::XNamingService;
singleton protected : com::sun::star::uno::XNamingService;
singleton public : com::sun::star::uno::XNamingService;
singleton return : com::sun::star::uno::XNamingService;
//TODO: singleton short: com::sun::star::uno::XNamingService;
singleton static : com::sun::star::uno::XNamingService;
singleton strictfp : com::sun::star::uno::XNamingService;
singleton super : com::sun::star::uno::XNamingService;
//TODO: singleton switch: com::sun::star::uno::XNamingService;
singleton synchronized : com::sun::star::uno::XNamingService;
singleton this : com::sun::star::uno::XNamingService;
singleton throw : com::sun::star::uno::XNamingService;
singleton throws : com::sun::star::uno::XNamingService;
//TODO: singleton transient: com::sun::star::uno::XNamingService;
singleton try : com
::sun::star::uno::XNamingService;
//TODO: singleton void: com::sun::star::uno::XNamingService;
singleton volatile : com::sun::star::uno::XNamingService;
singleton while : com::sun::star::uno::XNamingService;
};};};