@@ -1009,14 +1009,30 @@ def test_named_data_segments(self) -> None:
10091009EXAMPLE_HEADER_DATA : bytes  =  (
10101010    # Magic bytes 
10111011    b"eh00" 
1012-     # uint32_t header size (little endian) 
1012+     # uint32_t header size (little endian). 0x20 --> 32 bytes.  
10131013    +  b"\x20 \x00 \x00 \x00 " 
10141014    # uint64_t program size 
10151015    +  b"\x44 \x33 \x44 \x33 \x22 \x11 \x22 \x11 " 
10161016    # uint64_t segment base offset 
10171017    +  b"\x88 \x77 \x88 \x77 \x66 \x55 \x66 \x55 " 
10181018    # uint64_t segment data size 
10191019    +  b"\x22 \x33 \x22 \x33 \x44 \x55 \x44 \x55 " 
1020+     # Padding; provide at least NUM_HEAD_BYTES for the header. 
1021+     +  b"\x99 "  *  (_ExtendedHeader .NUM_HEAD_BYTES  -  32 )
1022+ )
1023+ 
1024+ # Minimum fields in an extended header (no segment data size). 
1025+ EXAMPLE_HEADER_DATA_MIN : bytes  =  (
1026+     # Magic bytes 
1027+     b"eh00" 
1028+     # uint32_t header size (little endian). 0x18 --> 24 bytes. 
1029+     +  b"\x18 \x00 \x00 \x00 " 
1030+     # uint64_t program size 
1031+     +  b"\x44 \x33 \x44 \x33 \x22 \x11 \x22 \x11 " 
1032+     # uint64_t segment base offset 
1033+     +  b"\x88 \x77 \x88 \x77 \x66 \x55 \x66 \x55 " 
1034+     # Padding; provide at least NUM_HEAD_BYTES for the header. 
1035+     +  b"\x99 "  *  (_ExtendedHeader .NUM_HEAD_BYTES  -  24 )
10201036)
10211037
10221038
@@ -1028,7 +1044,7 @@ def test_to_bytes(self) -> None:
10281044            segment_data_size = EXAMPLE_SEGMENT_DATA_SIZE ,
10291045        )
10301046        self .assertTrue (eh .is_valid ())
1031-         self .assertEqual (eh .to_bytes (), EXAMPLE_HEADER_DATA )
1047+         self .assertEqual (eh .to_bytes (), EXAMPLE_HEADER_DATA [ 0 : 32 ] )
10321048
10331049    def  test_to_bytes_with_non_defaults (self ) ->  None :
10341050        eh  =  _ExtendedHeader (
@@ -1045,11 +1061,11 @@ def test_to_bytes_with_non_defaults(self) -> None:
10451061
10461062        # But still produces a valid output header, since to_bytes() ignores 
10471063        # magic and length. 
1048-         self .assertEqual (eh .to_bytes (), EXAMPLE_HEADER_DATA )
1064+         self .assertEqual (eh .to_bytes (), EXAMPLE_HEADER_DATA [ 0 : 32 ] )
10491065
10501066    def  test_from_bytes_valid (self ) ->  None :
10511067        # Parse the serialized extended header. 
1052-         eh  =  _ExtendedHeader .from_bytes (EXAMPLE_HEADER_DATA )
1068+         eh  =  _ExtendedHeader .from_bytes (EXAMPLE_HEADER_DATA [ 0 : 32 ] )
10531069
10541070        # This is a valid header: good magic and length. 
10551071        self .assertTrue (eh .is_valid ())
@@ -1060,6 +1076,20 @@ def test_from_bytes_valid(self) -> None:
10601076        self .assertEqual (eh .segment_base_offset , EXAMPLE_SEGMENT_BASE_OFFSET )
10611077        self .assertEqual (eh .segment_data_size , EXAMPLE_SEGMENT_DATA_SIZE )
10621078
1079+     def  test_from_bytes_minimum (self ) ->  None :
1080+         # Parse the serialized extended header. 
1081+         eh  =  _ExtendedHeader .from_bytes (EXAMPLE_HEADER_DATA_MIN )
1082+ 
1083+         # This is a valid header: good magic and length. 
1084+         self .assertTrue (eh .is_valid ())
1085+ 
1086+         self .assertEqual (eh .magic , _ExtendedHeader .EXPECTED_MAGIC )
1087+         self .assertEqual (eh .length , _ExtendedHeader .MINIMUM_LENGTH )
1088+         self .assertEqual (eh .program_size , EXAMPLE_PROGRAM_SIZE )
1089+         self .assertEqual (eh .segment_base_offset , EXAMPLE_SEGMENT_BASE_OFFSET )
1090+         # Does not contain segment_data_size; should be 0 
1091+         self .assertEqual (eh .segment_data_size , 0 )
1092+ 
10631093    def  test_from_bytes_with_more_data_than_necessary (self ) ->  None :
10641094        # Pass in more data than necessary to parse the header. 
10651095        header_data_with_suffix  =  EXAMPLE_HEADER_DATA  +  b"\x55 "  *  16 
@@ -1167,4 +1197,5 @@ def test_from_bytes_invalid_length(self) -> None:
11671197        self .assertEqual (eh .length , 16 )
11681198        self .assertEqual (eh .program_size , EXAMPLE_PROGRAM_SIZE )
11691199        self .assertEqual (eh .segment_base_offset , EXAMPLE_SEGMENT_BASE_OFFSET )
1170-         self .assertEqual (eh .segment_data_size , EXAMPLE_SEGMENT_DATA_SIZE )
1200+         # Length cut short; segment_data_size parsed as 0. 
1201+         self .assertEqual (eh .segment_data_size , 0 )
0 commit comments