Neues Testprogrammn zur fehlerprüfung

This commit is contained in:
2026-09-15 12:57:38 +02:00
parent b4e5e863b3
commit f075081ec5
+248
View File
@@ -0,0 +1,248 @@
**FREE
//=====================================================================
//
// Project.....: MEDDFN
//
// Member......: MEDDFNTSTE
//
// Description.: MEDDFN Error Test Program
//
// Erstellen mit:
//
// CRTRPGMOD MODULE(GOSCH1/MEDDFNTSTE)
// SRCSTMF('/home/GOSCH/meddfn/meddfntste.rpgle')
// OPTION(*EVENTF)
// DBGVIEW(*SOURCE)
// TGTRLS(*CURRENT)
//
// CRTPGM PGM(GOSCH1/MEDDFNTSTE)
// MODULE(GOSCH1/MEDDFNTSTE)
// BNDSRVPGM(GOSCH1/MEDDFNSRV)
// ACTGRP(*NEW)
// TGTRLS(*CURRENT)
//
//=====================================================================
ctl-opt
option(*srcstmt:*nodebugio);
/COPY './meddfn_h.rpgle'
/COPY './meddfnap_h.rpgle'
/COPY './meddfnpr.rpgle'
//=====================================================================
//
// Data
//
//=====================================================================
dcl-ds MediaDefinition
likeds(MD_MediaDefinition_T);
dcl-ds Error
likeds(MD_Error_T);
//=====================================================================
//
// Prototypes
//
//=====================================================================
dcl-pr TestCreateValidation;
end-pr;
dcl-pr TestRetrieveApiError;
end-pr;
dcl-pr TestDeleteApiError;
end-pr;
//=====================================================================
//
// Main
//
//=====================================================================
TestCreateValidation();
TestRetrieveApiError();
TestDeleteApiError();
dsply '----------------------------------------';
dsply 'MEDDFN Error Test completed';
dsply '----------------------------------------';
//=====================================================================
//
// TestCreateValidation
//
// Verifies that the public interface returns a MEDDFN validation
// error when the media definition name is missing.
//
//=====================================================================
dcl-proc TestCreateValidation;
clear MediaDefinition;
clear Error;
MediaDefinition.LibraryName = 'QGPL';
MediaDefinition.NumberOfDevices = 1;
dsply '----------------------------------------';
dsply 'Test: Create validation error';
dsply '----------------------------------------';
monitor;
MD_CreateMediaDefinition(
MediaDefinition :
Error);
on-error;
// Expected: MD_CreateMediaDefinition sends an escape message.
endmon;
if Error.HasError;
dsply 'PASS Error.HasError';
else;
dsply 'FAIL Error.HasError';
endif;
if Error.MessageID = 'MDF0001';
dsply 'PASS Error.MessageID';
else;
dsply 'FAIL Error.MessageID';
endif;
if %trim(Error.MessageData) = '';
dsply 'PASS Error.MessageData';
else;
dsply 'INFO Error.MessageData contains data';
endif;
end-proc;
//=====================================================================
//
// TestRetrieveApiError
//
// Verifies that an IBM i API error is returned through MD_Error_T.
// The object is deliberately not created.
//
//=====================================================================
dcl-proc TestRetrieveApiError;
clear MediaDefinition;
clear Error;
MediaDefinition.MediaDefinitionName = 'MEDDFNXERR';
MediaDefinition.LibraryName = 'GOSCH1';
dsply '----------------------------------------';
dsply 'Test: Retrieve API error';
dsply '----------------------------------------';
monitor;
MD_RetrieveMediaDefinition(
MediaDefinition :
Error);
on-error;
// Expected: QSRRTVMD reports that the object does not exist.
endmon;
if Error.HasError;
dsply 'PASS Error.HasError';
else;
dsply 'FAIL Error.HasError';
endif;
if %trim(Error.MessageID) <> '';
dsply 'PASS Error.MessageID';
else;
dsply 'FAIL Error.MessageID';
endif;
if %trim(Error.MessageData) <> '';
dsply 'PASS Error.MessageData';
else;
dsply 'INFO Error.MessageData is empty';
endif;
end-proc;
//=====================================================================
//
// TestDeleteApiError
//
// Verifies IBM i API error handling for deletion of a non-existing
// media definition.
//
//=====================================================================
dcl-proc TestDeleteApiError;
clear MediaDefinition;
clear Error;
MediaDefinition.MediaDefinitionName = 'MEDDFNXERR';
MediaDefinition.LibraryName = 'GOSCH1';
dsply '----------------------------------------';
dsply 'Test: Delete API error';
dsply '----------------------------------------';
monitor;
MD_DeleteMediaDefinition(
MediaDefinition :
Error);
on-error;
// Expected: QSRDLTMD reports that the object does not exist.
endmon;
if Error.HasError;
dsply 'PASS Error.HasError';
else;
dsply 'FAIL Error.HasError';
endif;
if %trim(Error.MessageID) <> '';
dsply 'PASS Error.MessageID';
else;
dsply 'FAIL Error.MessageID';
endif;
if %trim(Error.MessageData) <> '';
dsply 'PASS Error.MessageData';
else;
dsply 'INFO Error.MessageData is empty';
endif;
end-proc;