Test MDF2003 in meddfntstx aufgenommen
This commit is contained in:
+148
-47
@@ -71,6 +71,8 @@ TestInvalidHeader();
|
|||||||
|
|
||||||
TestInvalidDevice();
|
TestInvalidDevice();
|
||||||
|
|
||||||
|
TestInvalidMediaFile();
|
||||||
|
|
||||||
|
|
||||||
dsply '----------------------------------------';
|
dsply '----------------------------------------';
|
||||||
dsply 'MEDDFN Parser Error Test completed';
|
dsply 'MEDDFN Parser Error Test completed';
|
||||||
@@ -84,13 +86,6 @@ return;
|
|||||||
//
|
//
|
||||||
// TestReceiverTooSmall
|
// TestReceiverTooSmall
|
||||||
//
|
//
|
||||||
// Tests parser handling of a receiver buffer that is too small
|
|
||||||
// for a TAPE0200 header.
|
|
||||||
//
|
|
||||||
// Expected error:
|
|
||||||
//
|
|
||||||
// MDF2005 - Receiver buffer too small
|
|
||||||
//
|
|
||||||
//=====================================================================
|
//=====================================================================
|
||||||
|
|
||||||
dcl-proc TestReceiverTooSmall;
|
dcl-proc TestReceiverTooSmall;
|
||||||
@@ -99,14 +94,12 @@ dcl-proc TestReceiverTooSmall;
|
|||||||
dsply 'Test: Receiver buffer too small';
|
dsply 'Test: Receiver buffer too small';
|
||||||
dsply '----------------------------------------';
|
dsply '----------------------------------------';
|
||||||
|
|
||||||
|
|
||||||
clear ReceiverBuffer;
|
clear ReceiverBuffer;
|
||||||
clear MediaDefinition;
|
clear MediaDefinition;
|
||||||
clear Error;
|
clear Error;
|
||||||
|
|
||||||
ReceiverLength = 1;
|
ReceiverLength = 1;
|
||||||
|
|
||||||
|
|
||||||
monitor;
|
monitor;
|
||||||
|
|
||||||
MD_ParseRetrieveBuffer(
|
MD_ParseRetrieveBuffer(
|
||||||
@@ -122,21 +115,18 @@ dcl-proc TestReceiverTooSmall;
|
|||||||
|
|
||||||
endmon;
|
endmon;
|
||||||
|
|
||||||
|
|
||||||
if Error.HasError;
|
if Error.HasError;
|
||||||
dsply 'PASS Error.HasError';
|
dsply 'PASS Error.HasError';
|
||||||
else;
|
else;
|
||||||
dsply 'FAIL Error.HasError';
|
dsply 'FAIL Error.HasError';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|
||||||
if Error.MessageID = 'MDF2005';
|
if Error.MessageID = 'MDF2005';
|
||||||
dsply 'PASS Error.MessageID';
|
dsply 'PASS Error.MessageID';
|
||||||
else;
|
else;
|
||||||
dsply 'FAIL Error.MessageID';
|
dsply 'FAIL Error.MessageID';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|
||||||
if %trim(Error.MessageData) = '';
|
if %trim(Error.MessageData) = '';
|
||||||
dsply 'PASS Error.MessageData';
|
dsply 'PASS Error.MessageData';
|
||||||
else;
|
else;
|
||||||
@@ -150,15 +140,6 @@ end-proc;
|
|||||||
//
|
//
|
||||||
// TestInvalidHeader
|
// TestInvalidHeader
|
||||||
//
|
//
|
||||||
// Tests parser handling of an invalid TAPE0200 header.
|
|
||||||
//
|
|
||||||
// The receiver buffer is large enough for the complete header, but
|
|
||||||
// LengthOfHeader contains an invalid value.
|
|
||||||
//
|
|
||||||
// Expected error:
|
|
||||||
//
|
|
||||||
// MDF2001 - Invalid TAPE0200 header
|
|
||||||
//
|
|
||||||
//=====================================================================
|
//=====================================================================
|
||||||
|
|
||||||
dcl-proc TestInvalidHeader;
|
dcl-proc TestInvalidHeader;
|
||||||
@@ -172,25 +153,20 @@ dcl-proc TestInvalidHeader;
|
|||||||
dsply 'Test: Invalid TAPE0200 header';
|
dsply 'Test: Invalid TAPE0200 header';
|
||||||
dsply '----------------------------------------';
|
dsply '----------------------------------------';
|
||||||
|
|
||||||
|
|
||||||
clear ReceiverBuffer;
|
clear ReceiverBuffer;
|
||||||
clear MediaDefinition;
|
clear MediaDefinition;
|
||||||
clear Error;
|
clear Error;
|
||||||
clear Header;
|
clear Header;
|
||||||
|
|
||||||
|
|
||||||
Header.LengthOfHeader = 0;
|
Header.LengthOfHeader = 0;
|
||||||
|
|
||||||
|
|
||||||
%subst(
|
%subst(
|
||||||
ReceiverBuffer :
|
ReceiverBuffer :
|
||||||
1 :
|
1 :
|
||||||
%size(Header)) = Header;
|
%size(Header)) = Header;
|
||||||
|
|
||||||
|
|
||||||
ReceiverLength = %size(Header);
|
ReceiverLength = %size(Header);
|
||||||
|
|
||||||
|
|
||||||
monitor;
|
monitor;
|
||||||
|
|
||||||
MD_ParseRetrieveBuffer(
|
MD_ParseRetrieveBuffer(
|
||||||
@@ -206,21 +182,18 @@ dcl-proc TestInvalidHeader;
|
|||||||
|
|
||||||
endmon;
|
endmon;
|
||||||
|
|
||||||
|
|
||||||
if Error.HasError;
|
if Error.HasError;
|
||||||
dsply 'PASS Error.HasError';
|
dsply 'PASS Error.HasError';
|
||||||
else;
|
else;
|
||||||
dsply 'FAIL Error.HasError';
|
dsply 'FAIL Error.HasError';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|
||||||
if Error.MessageID = 'MDF2001';
|
if Error.MessageID = 'MDF2001';
|
||||||
dsply 'PASS Error.MessageID';
|
dsply 'PASS Error.MessageID';
|
||||||
else;
|
else;
|
||||||
dsply 'FAIL Error.MessageID';
|
dsply 'FAIL Error.MessageID';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|
||||||
if %trim(Error.MessageData) = '';
|
if %trim(Error.MessageData) = '';
|
||||||
dsply 'PASS Error.MessageData';
|
dsply 'PASS Error.MessageData';
|
||||||
else;
|
else;
|
||||||
@@ -234,15 +207,6 @@ end-proc;
|
|||||||
//
|
//
|
||||||
// TestInvalidDevice
|
// TestInvalidDevice
|
||||||
//
|
//
|
||||||
// Tests parser handling of an invalid TAPE0200 device definition.
|
|
||||||
//
|
|
||||||
// The receiver contains a valid header and one device definition.
|
|
||||||
// The device definition has an invalid structure length.
|
|
||||||
//
|
|
||||||
// Expected error:
|
|
||||||
//
|
|
||||||
// MDF2002 - Invalid device definition
|
|
||||||
//
|
|
||||||
//=====================================================================
|
//=====================================================================
|
||||||
|
|
||||||
dcl-proc TestInvalidDevice;
|
dcl-proc TestInvalidDevice;
|
||||||
@@ -260,16 +224,118 @@ dcl-proc TestInvalidDevice;
|
|||||||
dsply 'Test: Invalid TAPE0200 device definition';
|
dsply 'Test: Invalid TAPE0200 device definition';
|
||||||
dsply '----------------------------------------';
|
dsply '----------------------------------------';
|
||||||
|
|
||||||
|
|
||||||
clear ReceiverBuffer;
|
clear ReceiverBuffer;
|
||||||
clear MediaDefinition;
|
clear MediaDefinition;
|
||||||
clear Error;
|
clear Error;
|
||||||
clear Header;
|
clear Header;
|
||||||
clear Device;
|
clear Device;
|
||||||
|
|
||||||
|
Header.MaximumParallelDeviceResources = 0;
|
||||||
|
Header.MinimumParallelDeviceResources = 0;
|
||||||
|
Header.OffsetToFirstDeviceDefinition =
|
||||||
|
%size(Header);
|
||||||
|
Header.NumberOfDeviceDefinitions = 1;
|
||||||
|
Header.LengthOfHeader =
|
||||||
|
%size(Header);
|
||||||
|
Header.DeviceAllocation =
|
||||||
|
MD_DeviceAllocateAll;
|
||||||
|
Header.SaveFormat =
|
||||||
|
MD_SaveFormatSerial;
|
||||||
|
|
||||||
|
Device.OffsetToNextDeviceDefinition = 0;
|
||||||
|
Device.DeviceName = 'TAPMLBBRMS';
|
||||||
|
Device.OffsetToFirstMediaFileDefinition =
|
||||||
|
%size(Device);
|
||||||
|
Device.NumberOfMediaFileDefinitions = 1;
|
||||||
|
|
||||||
|
// Deliberately invalid.
|
||||||
|
Device.LengthOfDeviceDefinition = 0;
|
||||||
|
|
||||||
|
%subst(
|
||||||
|
ReceiverBuffer :
|
||||||
|
1 :
|
||||||
|
%size(Header)) = Header;
|
||||||
|
|
||||||
|
%subst(
|
||||||
|
ReceiverBuffer :
|
||||||
|
%size(Header) + 1 :
|
||||||
|
%size(Device)) = Device;
|
||||||
|
|
||||||
|
ReceiverLength =
|
||||||
|
%size(Header)
|
||||||
|
+ %size(Device);
|
||||||
|
|
||||||
|
monitor;
|
||||||
|
|
||||||
|
MD_ParseRetrieveBuffer(
|
||||||
|
ReceiverBuffer :
|
||||||
|
ReceiverLength :
|
||||||
|
MediaDefinition :
|
||||||
|
Error);
|
||||||
|
|
||||||
|
on-error;
|
||||||
|
|
||||||
|
dsply 'FAIL Unexpected runtime error';
|
||||||
|
return;
|
||||||
|
|
||||||
|
endmon;
|
||||||
|
|
||||||
|
if Error.HasError;
|
||||||
|
dsply 'PASS Error.HasError';
|
||||||
|
else;
|
||||||
|
dsply 'FAIL Error.HasError';
|
||||||
|
endif;
|
||||||
|
|
||||||
|
if Error.MessageID = 'MDF2002';
|
||||||
|
dsply 'PASS Error.MessageID';
|
||||||
|
else;
|
||||||
|
dsply 'FAIL Error.MessageID';
|
||||||
|
endif;
|
||||||
|
|
||||||
|
if %trim(Error.MessageData) = '';
|
||||||
|
dsply 'PASS Error.MessageData';
|
||||||
|
else;
|
||||||
|
dsply 'FAIL Error.MessageData';
|
||||||
|
endif;
|
||||||
|
|
||||||
|
end-proc;
|
||||||
|
|
||||||
|
|
||||||
|
//=====================================================================
|
||||||
|
//
|
||||||
|
// TestInvalidMediaFile
|
||||||
|
//
|
||||||
|
//=====================================================================
|
||||||
|
|
||||||
|
dcl-proc TestInvalidMediaFile;
|
||||||
|
|
||||||
|
dcl-ds Header
|
||||||
|
likeds(MD_Tape0200Header_T)
|
||||||
|
inz;
|
||||||
|
|
||||||
|
dcl-ds Device
|
||||||
|
likeds(MD_Tape0200DeviceDefinition_T)
|
||||||
|
inz;
|
||||||
|
|
||||||
|
dcl-ds MediaFile
|
||||||
|
likeds(MD_Tape0200MediaFileDefinition_T)
|
||||||
|
inz;
|
||||||
|
|
||||||
|
|
||||||
|
dsply '----------------------------------------';
|
||||||
|
dsply 'Test: Invalid TAPE0200 media file definition';
|
||||||
|
dsply '----------------------------------------';
|
||||||
|
|
||||||
|
clear ReceiverBuffer;
|
||||||
|
clear MediaDefinition;
|
||||||
|
clear Error;
|
||||||
|
clear Header;
|
||||||
|
clear Device;
|
||||||
|
clear MediaFile;
|
||||||
|
|
||||||
|
|
||||||
//===============================================================
|
//===============================================================
|
||||||
// Valid header
|
// Header
|
||||||
//===============================================================
|
//===============================================================
|
||||||
|
|
||||||
Header.MaximumParallelDeviceResources = 0;
|
Header.MaximumParallelDeviceResources = 0;
|
||||||
@@ -292,7 +358,7 @@ dcl-proc TestInvalidDevice;
|
|||||||
|
|
||||||
|
|
||||||
//===============================================================
|
//===============================================================
|
||||||
// Invalid device definition
|
// Device
|
||||||
//===============================================================
|
//===============================================================
|
||||||
|
|
||||||
Device.OffsetToNextDeviceDefinition = 0;
|
Device.OffsetToNextDeviceDefinition = 0;
|
||||||
@@ -304,12 +370,32 @@ dcl-proc TestInvalidDevice;
|
|||||||
|
|
||||||
Device.NumberOfMediaFileDefinitions = 1;
|
Device.NumberOfMediaFileDefinitions = 1;
|
||||||
|
|
||||||
// Deliberately invalid.
|
Device.LengthOfDeviceDefinition =
|
||||||
Device.LengthOfDeviceDefinition = 0;
|
%size(Device);
|
||||||
|
|
||||||
|
|
||||||
//===============================================================
|
//===============================================================
|
||||||
// Header and device into receiver buffer
|
// Media file
|
||||||
|
//===============================================================
|
||||||
|
|
||||||
|
MediaFile.OffsetToNextMediaFileDefinition = 0;
|
||||||
|
|
||||||
|
MediaFile.SequenceNumber = 1;
|
||||||
|
|
||||||
|
MediaFile.NumberOfVolumeIdentifiers = 0;
|
||||||
|
|
||||||
|
MediaFile.OffsetToVolumeIdentifierArray = 0;
|
||||||
|
|
||||||
|
MediaFile.LengthOfVolumeIdentifier = 0;
|
||||||
|
|
||||||
|
MediaFile.StartingVolumeArrayElement = 0;
|
||||||
|
|
||||||
|
// Deliberately invalid.
|
||||||
|
MediaFile.LengthOfMediaFileDefinition = 0;
|
||||||
|
|
||||||
|
|
||||||
|
//===============================================================
|
||||||
|
// Build receiver buffer
|
||||||
//===============================================================
|
//===============================================================
|
||||||
|
|
||||||
%subst(
|
%subst(
|
||||||
@@ -317,18 +403,29 @@ dcl-proc TestInvalidDevice;
|
|||||||
1 :
|
1 :
|
||||||
%size(Header)) = Header;
|
%size(Header)) = Header;
|
||||||
|
|
||||||
|
|
||||||
%subst(
|
%subst(
|
||||||
ReceiverBuffer :
|
ReceiverBuffer :
|
||||||
%size(Header) + 1 :
|
%size(Header) + 1 :
|
||||||
%size(Device)) = Device;
|
%size(Device)) = Device;
|
||||||
|
|
||||||
|
%subst(
|
||||||
|
ReceiverBuffer :
|
||||||
|
%size(Header)
|
||||||
|
+ %size(Device)
|
||||||
|
+ 1 :
|
||||||
|
%size(MediaFile)) = MediaFile;
|
||||||
|
|
||||||
|
|
||||||
ReceiverLength =
|
ReceiverLength =
|
||||||
%size(Header)
|
%size(Header)
|
||||||
+ %size(Device);
|
+ %size(Device)
|
||||||
|
+ %size(MediaFile);
|
||||||
|
|
||||||
|
|
||||||
|
//===============================================================
|
||||||
|
// Execute parser
|
||||||
|
//===============================================================
|
||||||
|
|
||||||
monitor;
|
monitor;
|
||||||
|
|
||||||
MD_ParseRetrieveBuffer(
|
MD_ParseRetrieveBuffer(
|
||||||
@@ -345,6 +442,10 @@ dcl-proc TestInvalidDevice;
|
|||||||
endmon;
|
endmon;
|
||||||
|
|
||||||
|
|
||||||
|
//===============================================================
|
||||||
|
// Result
|
||||||
|
//===============================================================
|
||||||
|
|
||||||
if Error.HasError;
|
if Error.HasError;
|
||||||
dsply 'PASS Error.HasError';
|
dsply 'PASS Error.HasError';
|
||||||
else;
|
else;
|
||||||
@@ -352,7 +453,7 @@ dcl-proc TestInvalidDevice;
|
|||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|
||||||
if Error.MessageID = 'MDF2002';
|
if Error.MessageID = 'MDF2003';
|
||||||
dsply 'PASS Error.MessageID';
|
dsply 'PASS Error.MessageID';
|
||||||
else;
|
else;
|
||||||
dsply 'FAIL Error.MessageID';
|
dsply 'FAIL Error.MessageID';
|
||||||
|
|||||||
Reference in New Issue
Block a user