2012-04-22 43 views
0

我必須比較我期望的數組和通過調用我的函數生成的數組。我知道這是一個簡單的問題,但由於我是Qt新手,任何人都可以幫助我解決這個問題。我的代碼是如何比較Qt單元測試中的陣列

void TesterClass::testevolve() 
{ 
    float T[100][100],A[100][100]; 
    A[0][0]=0; 
    A[0][1]=75; 
    A[0][2]=75; 
    A[0][3]=75; 
    A[0][4]=0; 
    A[1][0]=0; 
    A[1][1]=42.857; 
    A[1][2]=63.169; 
    A[1][4]=30; 
    A[2][0]=0; 
    A[2][1]=33.258; 
    A[2][3]=76.116; 
    A[2][4]=30; 
    A[3][0]=0; 
    A[3][1]=33.928; 
    A[3][2]=52.455; 
    A[3][3]=69.642; 
    A[3][4]=30; 
    A[4][0]=0; 
    A[4][1]=50; 
    A[4][2]=50; 
    A[4][4]=0; 

    ClassInitiate ci; 
    ClassOutput co; 
    int i,j; 
    float c[100][100]=ci.initializeArray(T[100][100]); 
    co.output(c[100][100]); 
    for(i=0;i<=4;i++) 
    { 
     for(j=0;j<4;j++) 
     { 
      QVERIFY2(A[i][j]==c[i][j], "evolving array failed"); 
     } 
    } 
} 

我知道這個測試用例有什麼問題。任何人都可以告訴我寫這個的正確方法。

+0

請解釋您遇到的問題。 – Mat 2012-04-22 15:05:45

+0

我不知道如何編寫一個測試用例來比較Qt單元測試中的兩個數組 – user1322915 2012-04-22 15:07:40

+0

請解釋您使用那段代碼_的問題。它在做什麼/不做什麼?它是否編譯,如果不是,錯誤是什麼?如果它運行,會發生什麼? – Mat 2012-04-22 15:19:45

回答

0

QCOMPARE只比較指針值,而不是數組元素的值:

FAIL! : SC_tests::testSeemCarving() Compared pointers are not the same 
Actual (array): 0x93c6168 
Expected (array1): 0x92d9a50 
0

你不能簡單的用原始內存C數組做到這一點 - 你應該換他們在某種類的實現了==運營商。

如果你不能這樣做,那麼你現在擁有的東西可能是你最好的。