2017-09-21 22:26:06 +03:00
/*
2015-02-02 15:37:48 +03:00
* Copyright ( C ) 2015 Red Hat , Inc .
*
2018-01-30 22:26:26 +03:00
* SPDX - License - Identifier : LGPL - 2.0 +
*
2015-02-02 15:37:48 +03:00
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
2021-12-07 04:20:55 +03:00
* License along with this library . If not , see < https : //www.gnu.org/licenses/>.
2015-02-02 15:37:48 +03:00
*/
# include "config.h"
2015-05-05 01:08:49 +03:00
# include "libglnx.h"
2024-10-27 17:20:29 +03:00
# include "ot-gio-utils.h"
2015-02-02 15:37:48 +03:00
# include "ot-unix-utils.h"
# include <glib.h>
static void
test_ot_util_path_split_validate ( void )
{
2023-05-01 21:24:29 +03:00
const char * paths [ ] = { " foo/bar " , " test " , " foo/bar: " , " a/b/c/d/e/f/g/h/i/l/m/n/o/p " , NULL } ;
int n_components [ ] = { 2 , 1 , 2 , 14 , 0 } ;
2015-02-02 15:37:48 +03:00
int i ;
for ( i = 0 ; paths [ i ] ; i + + )
{
GError * error = NULL ;
2023-05-01 21:24:29 +03:00
g_autoptr ( GPtrArray ) components = NULL ;
if ( ! ot_util_path_split_validate ( paths [ i ] , & components , & error ) )
2015-02-02 15:37:48 +03:00
{
int j ;
g_assert_cmpint ( components - > len , = = , n_components [ i ] ) ;
for ( j = 0 ; j < components - > len ; j + + )
{
g_assert ( strcmp ( components - > pdata [ i ] , " .. " ) ) ;
g_assert_null ( strchr ( components - > pdata [ i ] , ' / ' ) ) ;
}
}
}
}
static void
test_ot_util_filename_validate ( void )
{
2023-05-01 21:24:29 +03:00
g_autoptr ( GError ) error = NULL ;
2015-02-02 15:37:48 +03:00
/* Check for valid inputs. */
g_assert ( ot_util_filename_validate ( " valid " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_assert_no_error ( error ) ;
2015-02-02 15:37:48 +03:00
g_assert ( ot_util_filename_validate ( " valid_file_name " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_assert_no_error ( error ) ;
2015-02-02 15:37:48 +03:00
g_assert ( ot_util_filename_validate ( " file.name " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_assert_no_error ( error ) ;
2015-02-02 15:37:48 +03:00
g_assert ( ot_util_filename_validate ( " foo.. " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_assert_no_error ( error ) ;
2015-02-02 15:37:48 +03:00
g_assert ( ot_util_filename_validate ( " ..bar " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_assert_no_error ( error ) ;
2015-02-02 15:37:48 +03:00
g_assert ( ot_util_filename_validate ( " baz: " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_assert_no_error ( error ) ;
2015-02-02 15:37:48 +03:00
/* Check for invalid inputs. */
g_assert_false ( ot_util_filename_validate ( " not/valid/file/name " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_clear_error ( & error ) ;
2015-02-02 15:37:48 +03:00
g_assert_false ( ot_util_filename_validate ( " . " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_clear_error ( & error ) ;
2015-02-02 15:37:48 +03:00
g_assert_false ( ot_util_filename_validate ( " .. " , & error ) ) ;
2016-12-02 21:45:04 +03:00
g_clear_error ( & error ) ;
2015-02-02 15:37:48 +03:00
}
2024-10-27 17:20:29 +03:00
static void
test_ot_human_duration ( void )
{
struct tcase
{
guint64 v ;
const char * expected ;
} ;
const struct tcase test_cases [ ] = {
{ 0 , " 0ns " } , { 590 , " 590ns " } , { 1590 , " 1ms " } ,
{ 9001 , " 9ms " } , { 1597249 , " 1.6s " } , { 10597249 , " 10.6s " } ,
} ;
for ( guint i = 0 ; i < G_N_ELEMENTS ( test_cases ) ; i + + )
{
const struct tcase * tcase = & test_cases [ i ] ;
g_autofree char * buf = ot_format_human_duration ( tcase - > v ) ;
g_assert_cmpstr ( buf , = = , tcase - > expected ) ;
}
return ;
}
2023-05-01 21:24:29 +03:00
int
main ( int argc , char * * argv )
2015-02-02 15:37:48 +03:00
{
g_test_init ( & argc , & argv , NULL ) ;
g_test_add_func ( " /ot_util_path_split_validate " , test_ot_util_path_split_validate ) ;
g_test_add_func ( " /ot_util_filename_validate " , test_ot_util_filename_validate ) ;
2024-10-27 17:20:29 +03:00
g_test_add_func ( " /ot_human_duration " , test_ot_human_duration ) ;
2023-05-01 21:24:29 +03:00
return g_test_run ( ) ;
2015-02-02 15:37:48 +03:00
}