Example #1
0
static int
replace_filter(DnfSack *sack, struct _Filter **fp, int keyname, int cmp_type,
               const char *match)
{
    if (*fp == NULL)
        *fp = filter_create(1);
    else
        filter_reinit(*fp, 1);

    struct _Filter *f = *fp;

    f->keyname = keyname;
    f->cmp_type = cmp_type;
    if (keyname == HY_PKG_PROVIDES && cmp_type != HY_GLOB) {
        f->match_type = _HY_RELDEP;
        DnfReldep *reldep = reldep_from_str (sack, match);
        if (reldep == NULL) {
            filter_free(*fp);
            *fp = NULL;
            return DNF_ERROR_BAD_SELECTOR;
        }
        f->matches[0].reldep = reldep;
        return 0;
    }

    f->match_type = _HY_STR;
    f->matches[0].str = g_strdup(match);
    return 0;
}
Example #2
0
TEST(filter, match_false){
	char * filter_str = my_strdup("(&(test_attr1=attr1)(&(test_attr2=attr2)(test_attr3=attr3)))");
	filter_pt filter = filter_create(filter_str);
	properties_pt props = properties_create();
	char * key = my_strdup("test_attr1");
	char * val = my_strdup("attr1");
	char * key2 = my_strdup("test_attr2");
	char * val2 = my_strdup("attr2");
	properties_set(props, key, val);
	properties_set(props, key2, val2);

	bool result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//cleanup
	properties_destroy(props);
	filter_destroy(filter);
	free(filter_str);
	free(key);
	free(key2);
	free(val);
	free(val2);

	mock().checkExpectations();
}
Example #3
0
TEST(filter, match_filter){
	char * filter_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3=attr3)))");
	char * compareTo_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3=attr3)))");
	filter_pt filter = filter_create(filter_str);
	filter_pt compareTo = filter_create(compareTo_str);

	bool result;
	filter_match_filter(filter, compareTo, &result);

	//cleanup
	filter_destroy(filter);
	filter_destroy(compareTo);
	free(filter_str);
	free(compareTo_str);

	mock().checkExpectations();
}
Example #4
0
TEST(filter, create_fail_invalid_closing_brackets){
	char * filter_str;
	filter_pt get_filter;
	//test missing closing brackets in substring
	mock().expectNCalls(6, "framework_log");
	filter_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3=at(tr3)))");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test missing closing brackets in value
	mock().expectNCalls(5, "framework_log");
	filter_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3>=att(r3)))");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();
}
Example #5
0
int streamdecode_init(struct stream_state **sp, struct audio_state *as, void *ud, streamdecode_callback *cb, int channel)
{
    if (channel != 0 && channel != 1)
        return -1;

    struct stream_state *s = *sp = malloc(sizeof *s);

    const int len = ((int)SAMPLES_PER_BIT(as)) | 1;
    struct argset {
        enum filter_type type;
        double freq;
        int len;
        int rate;
        double att;
    } args[][3] = {
        { { FILTER_TYPE_LOW_PASS , bell103_freqs[0][1] + 300, len, as->sample_rate, 21 },
          { FILTER_TYPE_LOW_PASS , bell103_freqs[0][0] + 100, len, as->sample_rate, 21 },
          { FILTER_TYPE_HIGH_PASS, bell103_freqs[0][0] + 100, len, as->sample_rate, 21 }, },

        { { FILTER_TYPE_HIGH_PASS, bell103_freqs[1][0] - 300, len, as->sample_rate, 21 },
          { FILTER_TYPE_LOW_PASS , bell103_freqs[1][0] + 100, len, as->sample_rate, 21 },
          { FILTER_TYPE_HIGH_PASS, bell103_freqs[1][0] + 100, len, as->sample_rate, 21 }, },
    };

    s->cb       = cb;
    s->userdata = ud;
    s->state    = STATE_NOSYNC;
    s->as       = *as;
    // should stop hard-coding channel 0
    const struct argset *arg = args[channel];
    s->chan     = filter_create(arg[0].type, arg[0].freq, arg[0].len, arg[0].rate, arg[0].att);
    s->bit[0]   = filter_create(arg[1].type, arg[1].freq, arg[1].len, arg[1].rate, arg[1].att);
    s->bit[1]   = filter_create(arg[2].type, arg[2].freq, arg[2].len, arg[2].rate, arg[2].att);
    // depends on IEEE-754-type zeros
    s->ehist[0] = calloc(WINDOW_SIZE(&s->as), sizeof *s->ehist[0]);
    s->ehist[1] = calloc(WINDOW_SIZE(&s->as), sizeof *s->ehist[1]);
    s->tick     = 0;
    s->levhist  = -1;
    s->gbltick  = 0;

    return 0;
}
SPAN_DECLARE(cfilter_t *) cfilter_create(fspec_t *fs)
{
    cfilter_t *cfi;

    if ((cfi = (cfilter_t *) malloc(sizeof(*cfi))))
    {
        if ((cfi->ref = filter_create(fs)) == NULL)
        {
            free(cfi);
            return NULL;
        }
        if ((cfi->imf = filter_create(fs)) == NULL)
        {
            free(cfi->ref);
            free(cfi);
            return NULL;
        }
    }
    return cfi;
}
Example #7
0
/**
 * Initialize the J2EE-NSAPI filter subsystem.
 */
PRStatus j2eefilter_init(JNIEnv* env)
{
    FilterMethods methods = FILTER_METHODS_INITIALIZER;
    methods.insert = j2eefilter_method_insert;
    methods.remove = j2eefilter_method_remove;
    methods.read = j2eefilter_method_read;
    methods.write = j2eefilter_method_write;
    methods.writev = j2eefilter_method_writev;
    methods.sendfile = j2eefilter_method_sendfile;
    methods.flush = j2eefilter_method_flush;

    // Create an NSAPI filter that will call OutputStream.write
    _j2eefilter = filter_create("j2ee-filter", FILTER_SUBREQUEST_BOUNDARY, &methods);
    if (!_j2eefilter)
        return PR_FAILURE;

    // Lookup HttpServletResponse methods
    jclass response_class = NSJavaUtil::findClassGlobal(env, "javax/servlet/http/HttpServletResponse");
    if (!response_class)
        return PR_FAILURE;
    _response_setStatus = env->GetMethodID(response_class, "setStatus", "(I)V");
    if (!_response_setStatus)
        return PR_FAILURE;
    _response_setHeader = env->GetMethodID(response_class, "setHeader", "(Ljava/lang/String;Ljava/lang/String;)V");
    if (!_response_setHeader)
        return PR_FAILURE;
    _response_addHeader = env->GetMethodID(response_class, "addHeader", "(Ljava/lang/String;Ljava/lang/String;)V");
    if (!_response_addHeader)
        return PR_FAILURE;
    _response_flushBuffer = env->GetMethodID(response_class, "flushBuffer", "()V");
    if (!_response_flushBuffer)
        return PR_FAILURE;

    // Lookup InputStream.read
    jclass inputstream_class = NSJavaUtil::findClassGlobal(env, "java/io/InputStream");
    if (!inputstream_class)
        return PR_FAILURE;
    _inputstream_read = env->GetMethodID(inputstream_class, "read", "([BII)I");
    if (!_inputstream_read)
        return PR_FAILURE;

    // Lookup OutputStream methods
    jclass outputstream_class = NSJavaUtil::findClassGlobal(env, "java/io/OutputStream");
    if (!outputstream_class)
        return PR_FAILURE;
    _outputstream_write = env->GetMethodID(outputstream_class, "write", "([BII)V");
    if (!_outputstream_write)
        return PR_FAILURE;
    _outputstream_flush = env->GetMethodID(outputstream_class, "flush", "()V");
    if (!_outputstream_flush)
        return PR_FAILURE;

    return PR_SUCCESS;
}
celix_status_t wiringTopologyManager_wiringEndpointListenerAdded(void* handle, service_reference_pt reference, void* service) {
    celix_status_t status = CELIX_SUCCESS;
    wiring_topology_manager_pt manager = handle;
    char *scope = NULL;
    char* wtm = NULL;

    serviceReference_getProperty(reference, (char *) INAETICS_WIRING_ENDPOINT_LISTENER_SCOPE, &scope);
    serviceReference_getProperty(reference, "WTM", &wtm);

    if (wtm != NULL && strcmp(wtm, "true") == 0) {
        printf("WTM: Ignoring own ENDPOINT_LISTENER\n");
    }
    else {
        status = celixThreadMutex_lock(&manager->listenerListLock);

        if (status == CELIX_SUCCESS) {
            hashMap_put(manager->listenerList, reference, NULL);
            celixThreadMutex_unlock(&manager->listenerListLock);
        }

        filter_pt filter = filter_create(scope);
        status = celixThreadMutex_lock(&manager->exportedWiringEndpointsLock);

        if (status == CELIX_SUCCESS) {
            hash_map_iterator_pt propIter = hashMapIterator_create(manager->exportedWiringEndpoints);

            while (hashMapIterator_hasNext(propIter)) {
                hash_map_pt wiringAdminList = hashMapIterator_nextValue(propIter);
                hash_map_iterator_pt waIter = hashMapIterator_create(wiringAdminList);

                while (hashMapIterator_hasNext(waIter)) {
                    wiring_endpoint_description_pt wEndpoint = hashMapIterator_nextValue(waIter);

                    bool matchResult = false;
                    filter_match(filter, wEndpoint->properties, &matchResult);

                    if (matchResult) {
                        wiring_endpoint_listener_pt listener = (wiring_endpoint_listener_pt) service;
                        status = listener->wiringEndpointAdded(listener->handle, wEndpoint, scope);
                    }
                }
                hashMapIterator_destroy(waIter);
            }
            hashMapIterator_destroy(propIter);

            celixThreadMutex_unlock(&manager->exportedWiringEndpointsLock);
        }
        filter_destroy(filter);

    }


    return status;
}
Example #9
0
/**************************************************************************
 Create a new rule
**************************************************************************/
static void filter_new(void)
{
#if 0
	struct filter *f = filter_create();
	if (f)
	{
		DoMethod(filter_listview, MUIM_NList_InsertSingle, f, MUIV_NList_Insert_Bottom);
		filter_dispose(f);
		set(filter_listview, MUIA_NList_Active, xget(filter_listview, MUIA_NList_Entries)-1);
		filter_edit();
	}
#endif
}
Example #10
0
TEST(filter, getString){
	char * filter_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3=attr3)))");
	filter_pt filter = filter_create(filter_str);

	char * get_str;
	filter_getString(filter, &get_str);

	//cleanup
	filter_destroy(filter);
	free(filter_str);

	mock().checkExpectations();
}
Example #11
0
/**
 * Creates a new filter.
 */
static void filter_new(void)
{
	struct filter *f = filter_create();
	if (f)
	{
		DoMethod(filter_list, MUIM_NList_InsertSingle, (ULONG)f, MUIV_NList_Insert_Bottom);
		filter_dispose(f);
		set(filter_list, MUIA_NList_Active, MUIV_NList_Active_Bottom);

		if (filter_last_selected) set(filter_name_string, MUIA_BetterString_SelectSize, -utf8len(filter_last_selected->name));
		set(filter_wnd, MUIA_Window_ActiveObject, filter_name_string);
	}
}
Example #12
0
int filters_init(cfg_t *cfg)
{
    filters = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, (GDestroyNotify)&filter_free);

    int index = cfg_size(cfg, "filter");
    while (index--) {
        cfg_t *sec = cfg_getnsec(cfg, "filter", index);
        filter *f = filter_create();
        add_filter_restrictions(f, sec);
        g_hash_table_insert(filters, g_strdup(cfg_title(sec)), f);
    }
    return 1;
}
Example #13
0
TEST(filter, create_fail_missing_opening_brackets){
	char * filter_str;
	filter_pt get_filter;

	//test missing opening brackets in main filter
	mock().expectNCalls(2, "framework_log");
	filter_str = my_strdup("&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3=attr3))");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test missing opening brackets in AND comparator
	mock().expectNCalls(3, "framework_log");
	filter_str = my_strdup("(&test_attr1=attr1|(test_attr2=attr2)(test_attr3=attr3))");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test missing opening brackets in AND comparator
	mock().expectNCalls(4, "framework_log");
	filter_str = my_strdup("(&(test_attr1=attr1)(|test_attr2=attr2(test_attr3=attr3))");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test missing opening brackets in NOT comparator
	mock().expectNCalls(4, "framework_log");
	filter_str = my_strdup("(&(test_attr1=attr1)(!test_attr2=attr2)");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();
}
Example #14
0
static int
replace_pkg_filter(DnfSack *sack, struct _Filter **fp, int keyname, int cmp_type,
                   const DnfPackageSet *pset)
{
    if (*fp == NULL)
        *fp = filter_create(1);
    else
        filter_reinit(*fp, 1);

    struct _Filter *f = *fp;

    f->keyname = keyname;
    f->cmp_type = cmp_type;
    f->match_type = _HY_PKG;
    f->matches[0].pset = dnf_packageset_clone((DnfPackageSet*)pset);
    return 0;
}
Example #15
0
struct tsproc *tsproc_create(enum tsproc_mode mode,
			     enum filter_type delay_filter, int filter_length)
{
	struct tsproc *tsp;

	tsp = calloc(1, sizeof(*tsp));
	if (!tsp)
		return NULL;

	switch (mode) {
	case TSPROC_FILTER:
		tsp->raw_mode = 0;
		tsp->weighting = 0;
		break;
	case TSPROC_RAW:
		tsp->raw_mode = 1;
		tsp->weighting = 0;
		break;
	case TSPROC_FILTER_WEIGHT:
		tsp->raw_mode = 0;
		tsp->weighting = 1;
		break;
	case TSPROC_RAW_WEIGHT:
		tsp->raw_mode = 1;
		tsp->weighting = 1;
		break;
	default:
		free(tsp);
		return NULL;
	}

	tsp->delay_filter = filter_create(delay_filter, filter_length);
	if (!tsp->delay_filter) {
		free(tsp);
		return NULL;
	}

	tsp->clock_rate_ratio = 1.0;

	return tsp;
}
Example #16
0
File: alobe.c Project: glenux/alobe
int main(int argc, char ** argv){
	srand(time(NULL));

	Config_t * config = config_create (argc, argv);
	if (!config_is_valid (config)) { config_usage (config); exit(-1); }
    pDEBUG("Got config from command line\n");

	config_set (config);
    pDEBUG("Config set\n");

	// en fonction de la commande 
	switch (config->command){
		case COMMAND_TP1_FILTER_EX2:
			{
				Filter_t * filter = filter_create(&(config->io), 
						config->filter_size,
						config->filter_offset);
				filter_run (filter);
				filter_destroy (filter);
			}
			break;

		case COMMAND_TP1_DEGREE_EX3:
			{	
				Degree_t * degree = degree_create (&(config->io),	
						config->nodecount,						
						MODE_DEGREE);
				degree_set_output (degree, true);
				degree_fill_from_input_graph (degree);
				degree_destroy (degree);
			}
			break;

		case COMMAND_TP1_STORE_GRAPH_EX4:
			{
				Store_t * store = store_create(&(config->io), 
						config->nodecount);
				store_fill_from_input_graph (store);
				store_destroy (store);
			}
			break;

		case COMMAND_TP1_DENSITY_AVGDEGREE_MAXDEGREE_EX5:
			{
				Degree_t * degree = degree_create (&(config->io),	
						config->nodecount,						
						MODE_DEGSTATS);
				degree_set_output (degree, true);
				degree_fill_from_input_graph (degree);
				degree_destroy (degree);
			}
			break;

		case COMMAND_TP1_CONNEXITY_EX6:
			{
				Store_t * store = store_create(&(config->io), 
						config->nodecount);
				store_fill_from_input_graph (store);
				store_connexity (store, NULL);
				store_destroy (store);
			}
			break;

		case COMMAND_TP1_CONNEXITY_DEFI:
			{
				Defi_t * defi = defi_create(&(config->io),
						config->nodecount);
				defi_run (defi);
				defi_destroy (defi);
			}
			break;

		case COMMAND_TP2_DISTANCE_ONE_TO_OTHER_EX1:
			{
				fprintf(stderr,"Exercice 1 - Ecrire un  programme qui,  étant  donné un\n");
				fprintf(stderr," graphe et un de ses noeud,  calcule la distance  de ce\n");
				fprintf(stderr," noeud  a tous  les  autres,  ainsi que  la moyenne  de\n");
				fprintf(stderr," toutes ces distances.\n\n");

				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_MAX_AND_AVERAGE);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, 1);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;

		case COMMAND_TP2_PLOT_DISTRIB_DISTANCES_EX2:
			{
				fprintf(stderr,"Exercice 2 - Tracer la  distribution des  distances à un\n");
				fprintf(stderr," noeud donné, c'est à dire pour chaque entier  i le nom-\n");
				fprintf(stderr," bre de noeuds à distance i du noeud donné.\n\n");
				
				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_MAX_DISTRIBUTION);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, 1);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_EVOL_OF_DISTS_FNC_NB_PARCOURS_EX3:
			{
				fprintf(stderr, "Exercice 3 - Ecrire un  programme  qui permet  de tracer\n");
				fprintf(stderr, " l'évolution de  l'estimation de  la distance moyenne en\n");
				fprintf(stderr, " fonction du nombre de parcours effectués.\n");
				fprintf(stderr, "A chaque étape, le programme calcule la distance moyenne\n");
				fprintf(stderr, " d'un noeud à tous les autres, puis fait la moyenne avec\n");
				fprintf(stderr, " toutes les valeurs précédentes.\n\n");
						
				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_EVOLUTION);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_LIMIT_INFERIOR_EX4:
			{
				fprintf(stderr, "Exercice 4 - Ecrire un  programme qui  calcule une borne\n");
				fprintf(stderr, " inférieure du diamètre, en prenant la distance maximale\n");
				fprintf(stderr, " d'un noeud donné à tous les autres.\n\n");

				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_SHOW_LIMIT_INF);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_LIMIT_SUPERIOR_EX5:
			{
				fprintf(stderr, "Exercice 5 - Ecrire un programme  qui calcule  une borne\n");
				fprintf(stderr, " supérieure du diamètre, en prenant la distance maximale\n");
				fprintf(stderr, " dans l'arbre du parcours en largeur.\n\n");

				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_SHOW_LIMIT_SUP);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;
		case COMMAND_TP2_EVOLUTION_AND_LIMITS_DEFI:
			{
				fprintf(stderr, "Défi - Ecrire un  programme qui  donne un  encadrement de\n");
				fprintf(stderr, " plus en plus fin  du diamètre d'un graphe.  Le programme\n");
				fprintf(stderr, " effectue à  chaque étape  un parcours  en largeur et  en\n");
				fprintf(stderr, " déduit une borne inférieure et une borne supérieure pour\n");
				fprintf(stderr, " le diamètre.  Si elle  améliorent le résultat  elle sont\n");
				fprintf(stderr, " conservées  à la  place des meilleures  valeurs trouvées\n");
				fprintf(stderr, " lors des étapes précédentes.\n\n");
				
				Distance_t * distance = distance_create((&config->io),
						config->nodecount);
				distance_set_mode (distance, MODE_DEFI);

				distance_set_root (distance, config->root_index);
				distance_set_iterations (distance, config->iterations);

				distance_compute (distance);
				distance_destroy (distance);
			}
			break;

		case COMMAND_TP3_DISTRIB_DEG_EX1:
			{
				fprintf(stderr, "Exercice 1 - Ecrire un programme qui calcule la distribu-\n");
				fprintf(stderr, " tion des degrés d'un graphe.\n");

				Degree_t * degree = degree_create (&(config->io),	
						config->nodecount,						
						MODE_DEGREE);
				degree_set_output (degree, false);
				degree_fill_from_input_graph (degree);

				degree_output_distribution (degree);
				degree_destroy (degree);

			}
			break;

		case COMMAND_TP3_EVOL_AVG_DEG_EX2:
			{
				Store_t * store = store_create(&(config->io), 
						config->nodecount);
				store_fill_from_input_graph (store);

				store_compute_avg_degree(store, config->iterations);

				store_destroy (store);

			}
			break;

		case COMMAND_TP3_GENERATE_EX3:
			{

				fprintf(stderr, "Generating a random graph\n");

				Generator_t * generator = generator_create(&(config->io),
						config->nodecount,
						config->filter_size);

				generator_run (generator);
				generator_destroy (generator); 
			}
			break;
			
		case COMMAND_TP3_DEGENERATE_EX5:
			{
				fprintf(stderr, "Degenerating input graph\n");
				Degenerator_t * degen = degenerator_create (&(config->io),
						config->nodecount, config->iterations);						
				degenerator_set_select_mode (degen, DEGENERATOR_SELECT_RANDOM);

				degenerator_compute (degen);
				degenerator_destroy (degen);
			}
			break;
	
		case COMMAND_TP3_DEGENERATE_MAX_DEG_EX7:
			{
				fprintf(stderr, "Degenerating input graph with max degrees first\n");
				Degenerator_t * degen = degenerator_create (&(config->io),
						config->nodecount, config->iterations);						
				degenerator_set_select_mode (degen, DEGENERATOR_SELECT_MAX_DEG);

				degenerator_compute (degen);
				degenerator_destroy (degen);
			}
			break;

		default:
			{
				printf("Undefined mode\n");
			}
			break;
	}

	config_destroy (config);

	return EXIT_SUCCESS;
}
Example #17
0
TEST(filter, create_misc){
	char * filter_str;
	filter_pt get_filter;
	//test trailing chars
	mock().expectOneCall("framework_log");
	filter_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3=attr3))) oh no! trailing chars");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test half APPROX operator (should be "~=", instead is "~")
	mock().expectNCalls(5, "framework_log");
	filter_str = my_strdup("(&(test_attr1=attr1)(|(test_attr2=attr2)(test_attr3~attr3)))");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test PRESENT operator with trailing chars (should just register as substrings: "*" and "attr3")
	filter_str = my_strdup("(test_attr3=*attr3)");
	get_filter = filter_create(filter_str);
	CHECK(get_filter != NULL);
	LONGS_EQUAL(SUBSTRING, get_filter->operand)
	LONGS_EQUAL(2, arrayList_size((array_list_pt) get_filter->value));
	filter_destroy(get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test parsing a attribute of 0 length
	mock().expectNCalls(3, "framework_log");
	filter_str = my_strdup("(>=attr3)");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test parsing a value of 0 length
	mock().expectOneCall("framework_log");
	filter_str = my_strdup("(test_attr3>=)");
	get_filter = filter_create(filter_str);
	POINTERS_EQUAL(NULL, get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test parsing a value with a escaped closing bracket "\)"
	filter_str = my_strdup("(test_attr3>=strWith\\)inIt)");
	get_filter = filter_create(filter_str);
	CHECK(get_filter != NULL);
	STRCMP_EQUAL("strWith)inIt", (char*)get_filter->value);
	filter_destroy(get_filter);
	free(filter_str);
	mock().checkExpectations();

	//test parsing a substring with a escaped closing bracket "\)"
	filter_str = my_strdup("(test_attr3=strWith\\)inIt)");
	get_filter = filter_create(filter_str);
	CHECK(get_filter != NULL);
	STRCMP_EQUAL("strWith)inIt", (char*)get_filter->value);
	filter_destroy(get_filter);
	free(filter_str);
	mock().checkExpectations();
}
Example #18
0
TEST(filter, match_operators){
	char * filter_str;
	filter_pt filter;
	properties_pt props = properties_create();
	char * key = my_strdup("test_attr1");
	char * val = my_strdup("attr1");
	char * key2 = my_strdup("test_attr2");
	char * val2 = my_strdup("attr2");
	properties_set(props, key, val);
	properties_set(props, key2, val2);

	//test EQUALS
	filter_str = my_strdup("(test_attr1=attr1)");
	filter = filter_create(filter_str);
	bool result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test EQUALS false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1=falseString)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test APPROX TODO: update this test once APPROX is implemented
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1~=attr1)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test APROX false TODO: update this test once APPROX is implemented
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1~=ATTR1)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test PRESENT
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1=*)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test PRESENT false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr3=*)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test LESSEQUAL less
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1<=attr5)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test LESSEQUAL equals
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2<=attr2)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test LESSEQUAL false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2<=attr1)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test GREATEREQUAL greater
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2>=attr1)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test GREATEREQUAL equals
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2>=attr2)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test GREATEREQUAL false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1>=attr5)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test LESS less
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1<attr5)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test LESS equals
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2<attr2)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test LESS false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2<attr1)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test GREATER greater
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2>attr1)");
	filter = filter_create(filter_str);
	result = false;
	filter_match(filter, props, &result);
	CHECK(result);

	//test GREATER equals
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr2>attr2)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test GREATER false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1>attr5)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//test SUBSTRING equals
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1=attr*)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK(result);

	//test SUBSTRING false
	filter_destroy(filter);
	free(filter_str);
	filter_str = my_strdup("(test_attr1=attr*charsNotPresent)");
	filter = filter_create(filter_str);
	result = true;
	filter_match(filter, props, &result);
	CHECK_FALSE(result);

	//cleanup
	properties_destroy(props);
	filter_destroy(filter);
	free(filter_str);
	free(key);
	free(key2);
	free(val);
	free(val2);

	mock().checkExpectations();
}