@@ -466,6 +466,15 @@ mod tests {
466
466
assert ! ( bi. command_line_tag( ) . is_none( ) ) ;
467
467
}
468
468
469
+ #[ test]
470
+ /// Compile time test for `BootLoaderNameTag`.
471
+ fn name_tag_size ( ) {
472
+ use BootLoaderNameTag ;
473
+ unsafe {
474
+ core:: mem:: transmute :: < [ u8 ; 9 ] , BootLoaderNameTag > ( [ 0u8 ; 9 ] ) ;
475
+ }
476
+ }
477
+
469
478
#[ test]
470
479
fn framebuffer_tag_rgb ( ) {
471
480
// direct RGB mode test:
@@ -587,6 +596,16 @@ mod tests {
587
596
}
588
597
}
589
598
599
+ #[ test]
600
+ /// Compile time test for `FramebufferTag`.
601
+ fn framebuffer_tag_size ( ) {
602
+ use crate :: FramebufferTag ;
603
+ unsafe {
604
+ // 24 for the start + 24 for `FramebufferType`.
605
+ core:: mem:: transmute :: < [ u8 ; 48 ] , FramebufferTag > ( [ 0u8 ; 48 ] ) ;
606
+ }
607
+ }
608
+
590
609
#[ test]
591
610
fn vbe_info_tag ( ) {
592
611
//Taken from GRUB2 running in QEMU.
@@ -745,6 +764,16 @@ mod tests {
745
764
}
746
765
}
747
766
767
+ #[ test]
768
+ /// Compile time test for `VBEInfoTag`.
769
+ fn vbe_info_tag_size ( ) {
770
+ use VBEInfoTag ;
771
+ unsafe {
772
+ // 16 for the start + 512 from `VBEControlInfo` + 256 from `VBEModeInfo`.
773
+ core:: mem:: transmute :: < [ u8 ; 784 ] , VBEInfoTag > ( [ 0u8 ; 784 ] ) ;
774
+ }
775
+ }
776
+
748
777
#[ test]
749
778
fn grub2 ( ) {
750
779
#[ repr( C , align( 8 ) ) ]
@@ -1225,6 +1254,16 @@ mod tests {
1225
1254
assert ! ( s. next( ) . is_none( ) ) ;
1226
1255
}
1227
1256
1257
+ #[ test]
1258
+ /// Compile time test for `ElfSectionsTag`.
1259
+ fn elf_sections_tag_size ( ) {
1260
+ use super :: ElfSectionsTag ;
1261
+ unsafe {
1262
+ // `ElfSectionsTagInner` is 12 bytes + 4 in the offset.
1263
+ core:: mem:: transmute :: < [ u8 ; 16 ] , ElfSectionsTag > ( [ 0u8 ; 16 ] ) ;
1264
+ }
1265
+ }
1266
+
1228
1267
#[ test]
1229
1268
fn efi_memory_map ( ) {
1230
1269
use memory_map:: EFIMemoryAreaType ;
@@ -1291,4 +1330,15 @@ mod tests {
1291
1330
let efi_mmap = boot_info. efi_memory_map_tag ( ) ;
1292
1331
assert ! ( efi_mmap. is_none( ) ) ;
1293
1332
}
1333
+
1334
+ #[ test]
1335
+ /// Compile time test for `EFIMemoryMapTag`.
1336
+ fn efi_memory_map_tag_size ( ) {
1337
+ use super :: EFIMemoryMapTag ;
1338
+ unsafe {
1339
+ // `EFIMemoryMapTag` is 16 bytes + `EFIMemoryDesc` is 40 bytes.
1340
+ core:: mem:: transmute :: < [ u8 ; 56 ] , EFIMemoryMapTag > ( [ 0u8 ; 56 ] ) ;
1341
+ }
1342
+ }
1343
+
1294
1344
}
0 commit comments