@@ -12,9 +12,32 @@ fn data_dir() -> PathBuf {
12
12
. join ( "pronom" )
13
13
}
14
14
15
+ async fn test_file ( file_name : & str ) -> Result < ( String , & FileType ) > {
16
+ let data_dir = data_dir ( ) ;
17
+ let path = data_dir. join ( file_name) ;
18
+ let file_name = path
19
+ . file_name ( )
20
+ . expect ( "file name" )
21
+ . to_string_lossy ( )
22
+ . to_string ( ) ;
23
+ let file_name = file_name. split ( '.' ) . next ( ) . expect ( "split" ) . to_string ( ) ;
24
+ let id = if file_name. starts_with ( "x-fmt-" ) {
25
+ let parts: Vec < & str > = file_name. split ( '-' ) . collect ( ) ;
26
+ format ! ( "{}-{}/{}" , parts[ 0 ] , parts[ 1 ] , parts[ 2 ] )
27
+ } else {
28
+ let parts: Vec < & str > = file_name. split ( '-' ) . collect ( ) ;
29
+ format ! ( "{}/{}" , parts[ 0 ] , parts[ 1 ] )
30
+ } ;
31
+
32
+ let file_type = FileType :: try_from_file ( path) . await ?;
33
+ Ok ( ( id, file_type) )
34
+ }
35
+
15
36
#[ tokio:: test]
16
37
async fn test_file_classification ( ) -> Result < ( ) > {
17
38
let data_dir = data_dir ( ) ;
39
+ let mut passed_tests = 0 ;
40
+ let mut failed_tests = 0 ;
18
41
19
42
for entry in WalkDir :: new ( data_dir) {
20
43
let entry = entry?;
@@ -23,32 +46,34 @@ async fn test_file_classification() -> Result<()> {
23
46
continue ;
24
47
}
25
48
26
- let full_filename = path
49
+ let file_name = path
27
50
. file_name ( )
28
51
. expect ( "file name" )
29
52
. to_string_lossy ( )
30
53
. to_string ( ) ;
31
- let filename = full_filename. split ( '.' ) . next ( ) . expect ( "split" ) . to_string ( ) ;
32
- let id = if filename. starts_with ( "x-fmt-" ) {
33
- let parts: Vec < & str > = filename. split ( '-' ) . collect ( ) ;
34
- format ! ( "{}-{}/{}" , parts[ 0 ] , parts[ 1 ] , parts[ 2 ] )
35
- } else {
36
- let parts: Vec < & str > = filename. split ( '-' ) . collect ( ) ;
37
- format ! ( "{}/{}" , parts[ 0 ] , parts[ 1 ] )
38
- } ;
54
+ let ( id, file_type) = test_file ( & file_name) . await ?;
39
55
40
- let file_type = FileType :: try_from_file ( path) . await ?;
41
56
if file_type. id ( ) == id {
42
- println ! ( "file_type.id()={}, id={}" , file_type. id( ) , id) ;
57
+ assert_eq ! ( file_type. id( ) , id) ;
58
+ passed_tests += 1 ;
43
59
} else {
44
60
eprintln ! (
45
- "[ERROR] file_type.id()={}, id={}: {full_filename }" ,
61
+ "[ERROR] file_type.id()={}, id={}: {file_name }" ,
46
62
file_type. id( ) ,
47
63
id
48
64
) ;
65
+ failed_tests += 1 ;
49
66
}
50
- // assert_eq!(file_type.id(), id);
51
67
}
52
68
69
+ println ! ( "Passed: {passed_tests}" ) ;
70
+ println ! ( "Failed: {failed_tests}" ) ;
53
71
Ok ( ( ) )
54
72
}
73
+
74
+ // #[tokio::test]
75
+ // async fn test_single_file_classification() -> Result<()> {
76
+ // let (id, file_type) = test_file("fmt-708-signature-id-831.wav").await?;
77
+ // assert_eq!(file_type.id(), id);
78
+ // Ok(())
79
+ // }
0 commit comments