@@ -282,6 +282,8 @@ mod tests {
282282 io:: { BufReader , Read } ,
283283 path:: Path ,
284284 } ;
285+ use tempfile:: tempdir;
286+ use walkdir:: WalkDir ;
285287
286288 #[ test]
287289 fn test_build_hdt ( ) {
@@ -343,4 +345,90 @@ mod tests {
343345 . collect :: < Vec < _ > > ( ) ;
344346 assert_eq ! ( triple_vec, res)
345347 }
348+
349+ #[ test]
350+ fn test_sparql10 ( ) {
351+ let tmp_dir = tempdir ( ) . expect ( "failed to create temp dir" ) ;
352+ let input_files = find_ttl_files ( "tests/resources/rdf-tests/sparql/sparql10" ) ;
353+ for f in & input_files {
354+ let new_hdt = format ! (
355+ "{}/{}" ,
356+ tmp_dir. path( ) . to_str( ) . unwrap( ) ,
357+ Path :: new( f)
358+ . file_name( )
359+ . unwrap( )
360+ . to_str( )
361+ . unwrap( )
362+ . replace( ".ttl" , ".hdt" )
363+ ) ;
364+
365+ let res = build_hdt ( vec ! [ f. clone( ) ] , new_hdt. as_str ( ) , Options :: default ( ) ) ;
366+ assert ! ( res. is_ok( ) ) ;
367+ }
368+ }
369+
370+ #[ test]
371+ fn test_sparql11 ( ) {
372+ let tmp_dir = tempdir ( ) . expect ( "failed to create temp dir" ) ;
373+ let input_files = find_ttl_files ( "tests/resources/rdf-tests/sparql/sparql11" ) ;
374+ for f in & input_files {
375+ let new_hdt = format ! (
376+ "{}/{}" ,
377+ tmp_dir. path( ) . to_str( ) . unwrap( ) ,
378+ Path :: new( f)
379+ . file_name( )
380+ . unwrap( )
381+ . to_str( )
382+ . unwrap( )
383+ . replace( ".ttl" , ".hdt" )
384+ ) ;
385+
386+ let res = build_hdt ( vec ! [ f. clone( ) ] , new_hdt. as_str ( ) , Options :: default ( ) ) ;
387+ match & res {
388+ Ok ( _) => { }
389+ Err ( e) => {
390+ eprintln ! ( "{f} failed to convert: {e}" )
391+ }
392+ }
393+
394+ assert ! ( res. is_ok( ) ) ;
395+ }
396+ }
397+
398+ #[ test]
399+ fn test_sparql12 ( ) {
400+ let tmp_dir = tempdir ( ) . expect ( "failed to create temp dir" ) ;
401+ let input_files = find_ttl_files ( "tests/resources/rdf-tests/sparql/sparql12" ) ;
402+ for f in & input_files {
403+ let new_hdt = format ! (
404+ "{}/{}" ,
405+ tmp_dir. path( ) . to_str( ) . unwrap( ) ,
406+ Path :: new( f)
407+ . file_name( )
408+ . unwrap( )
409+ . to_str( )
410+ . unwrap( )
411+ . replace( ".ttl" , ".hdt" )
412+ ) ;
413+
414+ let res = build_hdt ( vec ! [ f. clone( ) ] , new_hdt. as_str ( ) , Options :: default ( ) ) ;
415+ match & res {
416+ Ok ( _) => { }
417+ Err ( e) => {
418+ eprintln ! ( "{f} failed to convert: {e}" )
419+ }
420+ }
421+
422+ assert ! ( res. is_ok( ) ) ;
423+ }
424+ }
425+
426+ fn find_ttl_files < P : AsRef < Path > > ( dir : P ) -> Vec < String > {
427+ WalkDir :: new ( dir)
428+ . into_iter ( )
429+ . filter_map ( |e| e. ok ( ) )
430+ . filter ( |e| e. path ( ) . extension ( ) . is_some_and ( |ext| ext == "ttl" ) )
431+ . map ( |e| e. path ( ) . display ( ) . to_string ( ) )
432+ . collect ( )
433+ }
346434}
0 commit comments