コード例 #1
0
END_TEST

START_TEST (test_selector) 
{
    set_fail_freq(1000000);
    freesasa_parameters p = freesasa_default_parameters;
    p.shrake_rupley_n_points = 10;
    FILE *file = fopen(DATADIR "1ubq.pdb", "r");
    freesasa_structure *s = freesasa_structure_from_pdb(file, NULL, 0);
    freesasa_result *result = freesasa_calc_structure(s, NULL);
    double area;
    char name[FREESASA_MAX_SELECTION_NAME];

    freesasa_set_verbosity(FREESASA_V_SILENT);
    for (int i = 1; i < 17; ++i) { 
        /* This is a pretty short expression. Have not verified that
           it's actually exactly 17 memory allocations, but we have
           success with a frequencey of 18, and 17 seems about right. */
        set_fail_freq(i);
        ck_assert_int_eq(freesasa_select_area("s, resn ALA and not resi 1-20", name, &area, s, result),
                         FREESASA_FAIL); // this expression should come across most allocations
    }
    freesasa_set_verbosity(FREESASA_V_NORMAL);
    fclose(file);
    freesasa_result_free(result);
    freesasa_structure_free(s);
}
コード例 #2
0
ファイル: test_selection.c プロジェクト: harryjubb/freesasa
static void
test_select(const char **command,int n_commands) 
{
    for (int i = 0; i < n_commands; ++i) 
        ck_assert_int_eq(freesasa_select_area(command[i],selection_name[i],value+i,structure,result),
                         FREESASA_SUCCESS);
}
コード例 #3
0
ファイル: test_selection.c プロジェクト: harryjubb/freesasa
END_TEST

START_TEST (test_syntax_error)
{
    double a;
    char s[FREESASA_MAX_SELECTION_NAME+1];
    const char *err[] = {"","a","a,","a,b",
                         // no selection arg
                         "a,resi","a,resn","a,name","a,symbol","a,chain",
                         // no name of selection
                         ",resn ala",",resi 1",",name ca",", symbol c",",chain a",
                         "resn ala","resi 1","name ca","symbol c","chain a",
                         // comma wrong place, no name
                         "resn, ala","resi, 1","name, ca","symbol, c","chain, a",
                         // ranges (-) used where not allowed
                         "a, resn ala-arg", "a, name ca-cb","a, symbol c-o",
                         "a, resi 1-2-3",
                         // trailing +-
                         "a, resn ala+", "a, resn ala+arg+", "a, resi 1-",
                         "a, resi 1-", "a, resi 1-2+","a, resi 1+2-5+",
                         // boolean operators
                         "a, (resn ala) AND","a,(resn ala) OR","a,(resn ala) OR NOT",
                         "a, (resn ala) AND arg","a,(resn ala) OR arg",
                         "a, (resn ala) OR NOT arg",
                         "a, ala OR resn arg",
    };
    int n = sizeof(err)/sizeof(char*);
    freesasa_set_verbosity(FREESASA_V_SILENT);
    for (int i = 0; i < n; ++i) {
        ck_assert_int_eq(freesasa_select_area(err[i],s,&a,structure,result),FREESASA_FAIL);
    }
    freesasa_set_verbosity(FREESASA_V_NORMAL);
} END_TEST
コード例 #4
0
ファイル: test_selection.c プロジェクト: harryjubb/freesasa
} END_TEST

  // check that some complex constructs don't cause errors, but no checks for valid selection
START_TEST (test_complex_syntax)
{
    double a;
    char s[FREESASA_MAX_SELECTION_NAME+1];
    const char *stmt[] = {"a, (resn ala AND resi 1-3) OR (NOT chain A+B AND (symbol C OR symbol O))",
                          "a, NOT symbol SE+C AND NOT resi 5-7+1+6-8+100+200+10-11"
    };
    int n = sizeof(stmt)/sizeof(char*);
    freesasa_set_verbosity(FREESASA_V_SILENT);
    for (int i = 0; i < n; ++i) {
        ck_assert_int_eq(freesasa_select_area(stmt[i],s,&a,structure,result),FREESASA_SUCCESS);
    }
    freesasa_set_verbosity(FREESASA_V_NORMAL);
} END_TEST