tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

max_size.rs (3019B)


      1 // Copyright 2019 The Servo Project Developers. See the COPYRIGHT
      2 // file at the top-level directory of this distribution and at
      3 // http://rust-lang.org/COPYRIGHT.
      4 //
      5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
      6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
      7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
      8 // option. This file may not be copied, modified, or distributed
      9 // except according to those terms.
     10 
     11 #![allow(dead_code)]
     12 
     13 use peek_poke::{PeekPoke, Poke};
     14 use std::{marker::PhantomData, mem::size_of};
     15 
     16 #[test]
     17 fn test_numbers() {
     18    assert_eq!(u8::max_size(), size_of::<u8>());
     19    assert_eq!(u16::max_size(), size_of::<u16>());
     20    assert_eq!(u32::max_size(), size_of::<u32>());
     21    assert_eq!(u64::max_size(), size_of::<u64>());
     22    assert_eq!(usize::max_size(), size_of::<usize>());
     23    assert_eq!(i8::max_size(), size_of::<i8>());
     24    assert_eq!(i16::max_size(), size_of::<i16>());
     25    assert_eq!(i32::max_size(), size_of::<i32>());
     26    assert_eq!(i64::max_size(), size_of::<i64>());
     27    assert_eq!(isize::max_size(), size_of::<isize>());
     28    // floating
     29    assert_eq!(f32::max_size(), size_of::<f32>());
     30    assert_eq!(f64::max_size(), size_of::<f64>());
     31 }
     32 
     33 #[test]
     34 fn test_bool() {
     35    assert_eq!(bool::max_size(), size_of::<u8>());
     36 }
     37 
     38 #[test]
     39 fn test_option() {
     40    assert_eq!(
     41        Option::<usize>::max_size(),
     42        <u8>::max_size() + <usize>::max_size()
     43    );
     44 }
     45 
     46 #[test]
     47 fn test_fixed_size_array() {
     48    assert_eq!(<[u32; 32]>::max_size(), 32 * size_of::<u32>());
     49    assert_eq!(<[u64; 8]>::max_size(), 8 * size_of::<u64>());
     50    assert_eq!(<[u8; 19]>::max_size(), 19 * size_of::<u8>());
     51 }
     52 
     53 #[test]
     54 fn test_tuple() {
     55    assert_eq!(<(isize, )>::max_size(), size_of::<isize>());
     56    assert_eq!(<(isize, isize, isize)>::max_size(), 3 * size_of::<isize>());
     57    assert_eq!(<(isize, ())>::max_size(), size_of::<isize>());
     58 }
     59 
     60 #[test]
     61 fn test_basic_struct() {
     62    #[derive(Debug, PeekPoke)]
     63    struct Bar {
     64        a: u32,
     65        b: u32,
     66        c: u32,
     67    }
     68 
     69    assert_eq!(<Bar>::max_size(), 3 * <u32>::max_size());
     70 }
     71 
     72 #[test]
     73 fn test_enum() {
     74    #[derive(Clone, Copy, PeekPoke)]
     75    enum TestEnum {
     76        NoArg,
     77        OneArg(usize),
     78        Args(usize, usize),
     79        AnotherNoArg,
     80        StructLike { x: usize, y: f32 },
     81    }
     82    assert_eq!(
     83        TestEnum::max_size(),
     84        <u8>::max_size() + 2 * <usize>::max_size()
     85    );
     86 }
     87 
     88 #[test]
     89 fn test_enum_cstyle() {
     90    #[repr(u32)]
     91    #[derive(Clone, Copy, PeekPoke)]
     92    enum BorderStyle {
     93        None = 0,
     94        Solid = 1,
     95        Double = 2,
     96        Dotted = 3,
     97        Dashed = 4,
     98        Hidden = 5,
     99        Groove = 6,
    100        Ridge = 7,
    101        Inset = 8,
    102        Outset = 9,
    103    }
    104    assert_eq!(BorderStyle::max_size(), <u8>::max_size());
    105 }
    106 
    107 #[test]
    108 fn test_phantom_data() {
    109    struct Bar;
    110    #[derive(PeekPoke)]
    111    struct Foo {
    112        x: u32,
    113        y: u32,
    114        _marker: PhantomData<Bar>,
    115    }
    116    assert_eq!(Foo::max_size(), 2 * size_of::<u32>())
    117 }