@@ -1888,135 +1888,6 @@ impl DataBox {
1888
1888
}
1889
1889
}
1890
1890
1891
- #[ cfg( test) ]
1892
- mod media_data_box_tests {
1893
- use super :: * ;
1894
-
1895
- impl DataBox {
1896
- fn at_offset ( file_offset : u64 , data : std:: vec:: Vec < u8 > ) -> Self {
1897
- DataBox {
1898
- metadata : DataBoxMetadata :: Mdat { file_offset } ,
1899
- data : data. into ( ) ,
1900
- }
1901
- }
1902
- }
1903
-
1904
- #[ test]
1905
- fn extent_with_length_before_mdat_returns_none ( ) {
1906
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1907
- let extent = Extent :: WithLength { offset : 0 , len : 2 } ;
1908
-
1909
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
1910
- }
1911
-
1912
- #[ test]
1913
- fn extent_to_end_before_mdat_returns_none ( ) {
1914
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1915
- let extent = Extent :: ToEnd { offset : 0 } ;
1916
-
1917
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
1918
- }
1919
-
1920
- #[ test]
1921
- fn extent_with_length_crossing_front_mdat_boundary_returns_none ( ) {
1922
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1923
- let extent = Extent :: WithLength { offset : 99 , len : 3 } ;
1924
-
1925
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
1926
- }
1927
-
1928
- #[ test]
1929
- fn extent_with_length_which_is_subset_of_mdat ( ) {
1930
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1931
- let extent = Extent :: WithLength {
1932
- offset : 101 ,
1933
- len : 2 ,
1934
- } ;
1935
-
1936
- assert_eq ! ( mdat. get( & extent) , Some ( & [ 1 , 1 ] [ ..] ) ) ;
1937
- }
1938
-
1939
- #[ test]
1940
- fn extent_to_end_which_is_subset_of_mdat ( ) {
1941
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1942
- let extent = Extent :: ToEnd { offset : 101 } ;
1943
-
1944
- assert_eq ! ( mdat. get( & extent) , Some ( & [ 1 , 1 , 1 , 1 ] [ ..] ) ) ;
1945
- }
1946
-
1947
- #[ test]
1948
- fn extent_with_length_which_is_all_of_mdat ( ) {
1949
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1950
- let extent = Extent :: WithLength {
1951
- offset : 100 ,
1952
- len : 5 ,
1953
- } ;
1954
-
1955
- assert_eq ! ( mdat. get( & extent) , Some ( mdat. data. as_slice( ) ) ) ;
1956
- }
1957
-
1958
- #[ test]
1959
- fn extent_to_end_which_is_all_of_mdat ( ) {
1960
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1961
- let extent = Extent :: ToEnd { offset : 100 } ;
1962
-
1963
- assert_eq ! ( mdat. get( & extent) , Some ( mdat. data. as_slice( ) ) ) ;
1964
- }
1965
-
1966
- #[ test]
1967
- fn extent_with_length_crossing_back_mdat_boundary_returns_none ( ) {
1968
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1969
- let extent = Extent :: WithLength {
1970
- offset : 103 ,
1971
- len : 3 ,
1972
- } ;
1973
-
1974
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
1975
- }
1976
-
1977
- #[ test]
1978
- fn extent_with_length_after_mdat_returns_none ( ) {
1979
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1980
- let extent = Extent :: WithLength {
1981
- offset : 200 ,
1982
- len : 2 ,
1983
- } ;
1984
-
1985
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
1986
- }
1987
-
1988
- #[ test]
1989
- fn extent_to_end_after_mdat_returns_none ( ) {
1990
- let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
1991
- let extent = Extent :: ToEnd { offset : 200 } ;
1992
-
1993
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
1994
- }
1995
-
1996
- #[ test]
1997
- fn extent_with_length_which_overflows_usize ( ) {
1998
- let mdat = DataBox :: at_offset ( std:: u64:: MAX - 1 , vec ! [ 1 ; 5 ] ) ;
1999
- let extent = Extent :: WithLength {
2000
- offset : std:: u64:: MAX ,
2001
- len : std:: usize:: MAX ,
2002
- } ;
2003
-
2004
- assert ! ( mdat. get( & extent) . is_none( ) ) ;
2005
- }
2006
-
2007
- // The end of the range would overflow `usize` if it were calculated, but
2008
- // because the range end is unbounded, we don't calculate it.
2009
- #[ test]
2010
- fn extent_to_end_which_overflows_usize ( ) {
2011
- let mdat = DataBox :: at_offset ( std:: u64:: MAX - 1 , vec ! [ 1 ; 5 ] ) ;
2012
- let extent = Extent :: ToEnd {
2013
- offset : std:: u64:: MAX ,
2014
- } ;
2015
-
2016
- assert_eq ! ( mdat. get( & extent) , Some ( & [ 1 , 1 , 1 , 1 ] [ ..] ) ) ;
2017
- }
2018
- }
2019
-
2020
1891
#[ derive( Clone , Copy , Debug , Eq , Hash , PartialEq ) ]
2021
1892
struct PropertyIndex ( u16 ) ;
2022
1893
#[ derive( Clone , Copy , Debug , Eq , Hash , PartialEq , PartialOrd ) ]
@@ -6289,3 +6160,132 @@ fn write_be_u32<T: WriteBytesExt>(des: &mut T, num: u32) -> Result<()> {
6289
6160
des. write_u32 :: < byteorder:: BigEndian > ( num)
6290
6161
. map_err ( From :: from)
6291
6162
}
6163
+
6164
+ #[ cfg( test) ]
6165
+ mod media_data_box_tests {
6166
+ use super :: * ;
6167
+
6168
+ impl DataBox {
6169
+ fn at_offset ( file_offset : u64 , data : std:: vec:: Vec < u8 > ) -> Self {
6170
+ DataBox {
6171
+ metadata : DataBoxMetadata :: Mdat { file_offset } ,
6172
+ data : data. into ( ) ,
6173
+ }
6174
+ }
6175
+ }
6176
+
6177
+ #[ test]
6178
+ fn extent_with_length_before_mdat_returns_none ( ) {
6179
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6180
+ let extent = Extent :: WithLength { offset : 0 , len : 2 } ;
6181
+
6182
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6183
+ }
6184
+
6185
+ #[ test]
6186
+ fn extent_to_end_before_mdat_returns_none ( ) {
6187
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6188
+ let extent = Extent :: ToEnd { offset : 0 } ;
6189
+
6190
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6191
+ }
6192
+
6193
+ #[ test]
6194
+ fn extent_with_length_crossing_front_mdat_boundary_returns_none ( ) {
6195
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6196
+ let extent = Extent :: WithLength { offset : 99 , len : 3 } ;
6197
+
6198
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6199
+ }
6200
+
6201
+ #[ test]
6202
+ fn extent_with_length_which_is_subset_of_mdat ( ) {
6203
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6204
+ let extent = Extent :: WithLength {
6205
+ offset : 101 ,
6206
+ len : 2 ,
6207
+ } ;
6208
+
6209
+ assert_eq ! ( mdat. get( & extent) , Some ( & [ 1 , 1 ] [ ..] ) ) ;
6210
+ }
6211
+
6212
+ #[ test]
6213
+ fn extent_to_end_which_is_subset_of_mdat ( ) {
6214
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6215
+ let extent = Extent :: ToEnd { offset : 101 } ;
6216
+
6217
+ assert_eq ! ( mdat. get( & extent) , Some ( & [ 1 , 1 , 1 , 1 ] [ ..] ) ) ;
6218
+ }
6219
+
6220
+ #[ test]
6221
+ fn extent_with_length_which_is_all_of_mdat ( ) {
6222
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6223
+ let extent = Extent :: WithLength {
6224
+ offset : 100 ,
6225
+ len : 5 ,
6226
+ } ;
6227
+
6228
+ assert_eq ! ( mdat. get( & extent) , Some ( mdat. data. as_slice( ) ) ) ;
6229
+ }
6230
+
6231
+ #[ test]
6232
+ fn extent_to_end_which_is_all_of_mdat ( ) {
6233
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6234
+ let extent = Extent :: ToEnd { offset : 100 } ;
6235
+
6236
+ assert_eq ! ( mdat. get( & extent) , Some ( mdat. data. as_slice( ) ) ) ;
6237
+ }
6238
+
6239
+ #[ test]
6240
+ fn extent_with_length_crossing_back_mdat_boundary_returns_none ( ) {
6241
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6242
+ let extent = Extent :: WithLength {
6243
+ offset : 103 ,
6244
+ len : 3 ,
6245
+ } ;
6246
+
6247
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6248
+ }
6249
+
6250
+ #[ test]
6251
+ fn extent_with_length_after_mdat_returns_none ( ) {
6252
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6253
+ let extent = Extent :: WithLength {
6254
+ offset : 200 ,
6255
+ len : 2 ,
6256
+ } ;
6257
+
6258
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6259
+ }
6260
+
6261
+ #[ test]
6262
+ fn extent_to_end_after_mdat_returns_none ( ) {
6263
+ let mdat = DataBox :: at_offset ( 100 , vec ! [ 1 ; 5 ] ) ;
6264
+ let extent = Extent :: ToEnd { offset : 200 } ;
6265
+
6266
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6267
+ }
6268
+
6269
+ #[ test]
6270
+ fn extent_with_length_which_overflows_usize ( ) {
6271
+ let mdat = DataBox :: at_offset ( std:: u64:: MAX - 1 , vec ! [ 1 ; 5 ] ) ;
6272
+ let extent = Extent :: WithLength {
6273
+ offset : std:: u64:: MAX ,
6274
+ len : std:: usize:: MAX ,
6275
+ } ;
6276
+
6277
+ assert ! ( mdat. get( & extent) . is_none( ) ) ;
6278
+ }
6279
+
6280
+ // The end of the range would overflow `usize` if it were calculated, but
6281
+ // because the range end is unbounded, we don't calculate it.
6282
+ #[ test]
6283
+ fn extent_to_end_which_overflows_usize ( ) {
6284
+ let mdat = DataBox :: at_offset ( std:: u64:: MAX - 1 , vec ! [ 1 ; 5 ] ) ;
6285
+ let extent = Extent :: ToEnd {
6286
+ offset : std:: u64:: MAX ,
6287
+ } ;
6288
+
6289
+ assert_eq ! ( mdat. get( & extent) , Some ( & [ 1 , 1 , 1 , 1 ] [ ..] ) ) ;
6290
+ }
6291
+ }
0 commit comments