2017-11-18 19:09:20 +03:00
/* SPDX-License-Identifier: LGPL-2.1+ */
2014-10-01 17:32:16 +04:00
/***
This file is part of systemd
Copyright 2014 Zbigniew Jędrzejewski - Szmek
* * */
# include "set.h"
static void test_set_steal_first ( void ) {
_cleanup_set_free_ Set * m = NULL ;
int seen [ 3 ] = { } ;
char * val ;
m = set_new ( & string_hash_ops ) ;
assert_se ( m ) ;
assert_se ( set_put ( m , ( void * ) " 1 " ) = = 1 ) ;
assert_se ( set_put ( m , ( void * ) " 22 " ) = = 1 ) ;
assert_se ( set_put ( m , ( void * ) " 333 " ) = = 1 ) ;
while ( ( val = set_steal_first ( m ) ) )
seen [ strlen ( val ) - 1 ] + + ;
2014-10-05 01:51:45 +04:00
assert_se ( seen [ 0 ] = = 1 & & seen [ 1 ] = = 1 & & seen [ 2 ] = = 1 ) ;
2014-10-01 17:32:16 +04:00
assert_se ( set_isempty ( m ) ) ;
}
2017-11-28 14:35:49 +03:00
typedef struct Item {
int seen ;
} Item ;
static void item_seen ( Item * item ) {
item - > seen + + ;
}
static void test_set_free_with_destructor ( void ) {
Set * m ;
struct Item items [ 4 ] = { } ;
unsigned i ;
assert_se ( m = set_new ( NULL ) ) ;
for ( i = 0 ; i < ELEMENTSOF ( items ) - 1 ; i + + )
assert_se ( set_put ( m , items + i ) = = 1 ) ;
m = set_free_with_destructor ( m , item_seen ) ;
assert_se ( items [ 0 ] . seen = = 1 ) ;
assert_se ( items [ 1 ] . seen = = 1 ) ;
assert_se ( items [ 2 ] . seen = = 1 ) ;
assert_se ( items [ 3 ] . seen = = 0 ) ;
}
2015-04-10 17:53:17 +03:00
static void test_set_put ( void ) {
_cleanup_set_free_ Set * m = NULL ;
m = set_new ( & string_hash_ops ) ;
assert_se ( m ) ;
assert_se ( set_put ( m , ( void * ) " 1 " ) = = 1 ) ;
assert_se ( set_put ( m , ( void * ) " 22 " ) = = 1 ) ;
assert_se ( set_put ( m , ( void * ) " 333 " ) = = 1 ) ;
assert_se ( set_put ( m , ( void * ) " 333 " ) = = 0 ) ;
assert_se ( set_remove ( m , ( void * ) " 333 " ) ) ;
assert_se ( set_put ( m , ( void * ) " 333 " ) = = 1 ) ;
assert_se ( set_put ( m , ( void * ) " 333 " ) = = 0 ) ;
assert_se ( set_put ( m , ( void * ) " 22 " ) = = 0 ) ;
}
2014-10-01 17:32:16 +04:00
int main ( int argc , const char * argv [ ] ) {
test_set_steal_first ( ) ;
2017-11-28 14:35:49 +03:00
test_set_free_with_destructor ( ) ;
2015-04-10 17:53:17 +03:00
test_set_put ( ) ;
2014-10-01 17:32:16 +04:00
return 0 ;
}