Skip to content
Extraits de code Groupes Projets
test.c 5,37 ko
Newer Older
  • Learn to ignore specific revisions
  • Laurent Paucot's avatar
    Laurent Paucot a validé
    #include <stdlib.h>
    #include <stdio.h>
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    #include "run.h"
    #include <CUnit/CUnit.h>
    #include <CUnit/TestRun.h>
    #include <CUnit/CUError.h>
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    #include <CUnit/Basic.h>
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    #include <CUnit/Automated.h>
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    void test_is_div(void){
        CU_ASSERT_TRUE(is_div(14,7));
    }
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    void test_is_prime(void){
        CU_ASSERT_TRUE(is_prime(13));
    }
    void test_is_not_prime(void){
        CU_ASSERT_FALSE(is_prime(14));
    }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    void empty_file_test(void){
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        FILE *file1 = NULL;
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        int err = run("Test_files/empty_input.txt","actual_output.txt",4);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        if (err == -1){
            CU_FAIL("method run failed");
            return;
        }
    
        file1 = fopen("actual_output.txt","r");
        if (file1 == NULL){
        CU_FAIL("actual_output opening fail");
        return;
        }
    
        char chaine1[20];
        CU_ASSERT_EQUAL(fgets(chaine1,20,file1),NULL);
    
        fclose(file1); 
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        
    }
    void short_file_test(void){
        FILE *file1 = NULL;
        FILE *file2 = NULL;
    
        file1 = fopen("Test_files/short_expected_output.txt","r");
        if (file1 == NULL){
            CU_FAIL("short_expected_output opening fail");
            return;
        }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        
        int err = run("Test_files/short_input.txt","actual_output.txt",4);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        if (err == -1){
            CU_FAIL("method run failed");
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            fclose(file1);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            return;
        }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        file2 = fopen("actual_output.txt","r");
        if (file2 == NULL){
        CU_FAIL("actual_output opening fail");
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        fclose(file1);
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        return;
        }
    
        char chaine1[50];
        char chaine2[50];
    
        while (fgets(chaine1,50,file1) != NULL && fgets(chaine2,50,file2) != NULL)
        {
            //printf("%s\n",chaine1);
            //printf("%s\n",chaine2);
            CU_ASSERT_STRING_EQUAL(chaine1,chaine2);
            
        }
    
        fclose(file1);
        fclose(file2);
    }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    void file_test_N_4(void){
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        FILE *file1 = NULL;
        FILE *file2 = NULL;
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        file1 = fopen("Test_files/expected_output.txt","r");
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        if (file1 == NULL){
            CU_FAIL("expected_output opening fail");
            return;
        }
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        clock_t start, end;
        double time;
        start = clock();
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        
        int err = run("Test_files/input.txt","actual_output.txt",4);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
        end = clock();
        time = (double) (end - start) / CLOCKS_PER_SEC;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        printf("Temps pour 4 threads de calculs = %.2f secondes \n",time);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        if (err == -1){
            CU_FAIL("method run failed");
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            fclose(file1);
            return;
        }
        
        file2 = fopen("actual_output.txt","r");
        if (file2 == NULL){
        CU_FAIL("actual_output opening fail");
        fclose(file1);
        return;
        }
    
        char chaine2[50];
    
        int n = 0;
    
        while (fgets(chaine2,50,file2) != NULL)
        {
            n++;
        }
        CU_ASSERT_EQUAL(n,100);
    
        fclose(file1);
        fclose(file2);
        
    }
    
    void file_test_N_1(void){
        FILE *file1 = NULL;
        FILE *file2 = NULL;
    
        file1 = fopen("Test_files/expected_output.txt","r");
        if (file1 == NULL){
            CU_FAIL("expected_output opening fail");
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            return;
        }
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        clock_t start, end;
        double time;
        start = clock();
        
        int err = run("Test_files/input.txt","actual_output.txt",1);
    
        end = clock();
        time = (double) (end - start) / CLOCKS_PER_SEC;
        printf("Temps pour 1 thread de calcul = %.2f secondes \n",time);
        if (err == -1){
            CU_FAIL("method run failed");
            fclose(file1);
            return;
        }
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        file2 = fopen("actual_output.txt","r");
    
        if (file2 == NULL){
        CU_FAIL("actual_output opening fail");
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        fclose(file1);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        int n = 0;
    
        while (fgets(chaine2,50,file2) != NULL)
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        {
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            n++;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        CU_ASSERT_EQUAL(n,100);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
        fclose(file1);
        fclose(file2);
        
    }
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    int setup(void){
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            return 0;
        }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        int teardown(void)
        {
            return 0;
        }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    int main(int argc, char *argv[]){
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        if (argc == 2 && strcmp(argv[1],"Test")==0){
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            if (CUE_SUCCESS != CU_initialize_registry())
            {
                return CU_get_error();
            }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            CU_pSuite pSuite = NULL;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            pSuite = CU_add_suite("ma_suite",setup,teardown);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            if (NULL == pSuite)
            {
                CU_cleanup_registry();
                return CU_get_error();
            }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            if (NULL == CU_add_test(pSuite,"test_is_div",test_is_div) ||
                NULL == CU_add_test(pSuite, "test_is_prime",test_is_prime) ||
                NULL == CU_add_test(pSuite, "test_is_not_prime",test_is_not_prime) || 
                NULL == CU_add_test(pSuite,"empty_file_test",empty_file_test) ||
                NULL == CU_add_test(pSuite,"short_file_test",short_file_test) ||
                NULL == CU_add_test(pSuite,"file_test : N = 4",file_test_N_4) ||
                NULL == CU_add_test(pSuite,"file_test N = 1",file_test_N_1))
            {
                CU_cleanup_registry();
                return CU_get_error();
            }
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            
            CU_basic_run_tests();
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            CU_automated_run_tests();
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
            CU_basic_show_failures(CU_get_failure_list());
        }
        else
        {
            if (argc == 5 && strcmp("-N",argv[1])==0){
                int err = run(argv[3],argv[4],atoi(argv[2]));
                if (err == -1){return EXIT_FAILURE;}
                
                
            }
            else
            {
                if (argc == 3){
                    
                    int err = run(argv[1],argv[2],4);
                    if (err == -1){return EXIT_FAILURE;}
                }
                else{
                    printf("Invalid type of number of arguments, please try again with the right format\n");
                    return EXIT_FAILURE;
                }
            }
            return EXIT_SUCCESS;
        }
        return EXIT_SUCCESS;
        
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    }